質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

7027閲覧

swiftで前の画面のタッチイベントが反応してしまう

chibikurosan

総合スコア52

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2015/02/04 00:01

下記のようにコードで、UIButtonを生成し、25個配置し、
それぞれにタッチイベントを設置しているのですが、
そのタッチイベントが画面遷移後でも、効いてしまい。
タッチイベントがあった場所をクリックすると反応してしまいアプリがおかしくなってしまいます。

また、UIApplication.sharedApplication().beginIgnoringInteractionEvents()
を使って、タッチイベントを無効に画面遷移してしまうと今度は遷移先の画面で、
タッチイベントが無効になってしまい苦戦しております。

よくありそうなケースなのですが、
前のページのタッチイベントだけ削除みたいな方法をご存知の方教えてください。
まだ、swift歴3日程度ですが、ご存知の方いましたら
教えていただけますと幸いです。

lang

1 2 override func viewDidLoad() { 3 super.viewDidLoad() 4 5 let appFrameSize = UIScreen.mainScreen().applicationFrame.size 6 // ボタンのサイズ 7 var levelIconSize:Int = Int(appFrameSize.width) / 5 8 9 10 11 for i in 0...24 { 12 13 let x = levelIconSize * (i % 5) + (levelIconSize / 2) 14 let y = levelIconSize * (i / 5) + (Int(appFrameSize.height) / 3) 15 16 let image = UIImage(named: "btn_image") as UIImage? 17 let imageButton = UIButton() 18 imageButton.tag = i 19 imageButton.frame = CGRectMake(0, 0, CGFloat(levelIconSize), CGFloat(levelIconSize)) 20 imageButton.layer.position = CGPoint(x:CGFloat(x), y:CGFloat(y)) 21 imageButton.setBackgroundImage(image, forState:nil) 22 23 //ボタンイベント設定 24 imageButton.addTarget(self, action: "tapBtn:", forControlEvents: .TouchUpInside) 25 //ボタンを追加 26 self.view.addSubview(imageButton) 27 } 28} 29 30〜〜 31 32func tapBtn(sender: UIButton) { 33 // segueを使って、次の画面に遷移 34 performSegueWithIdentifier("toSceneSegue", sender: sender) 35 36} 37 38// 次の画面に引数を渡すため 39override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 40 41 if segue.identifier == "toSceneSegue" { 42 43 println("nextpage tag (sender.tag)") 44 let nextVC: testViewController = segue.destinationViewController as testViewController 45 nextVC.modalTransitionStyle = UIModalTransitionStyle.PartialCurl 46 nextVC.selectLv = sender.tag 47 } 48} 49

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

firstVC.view.userInteractionEnabled = false

はどうでしょうか?

投稿2015/02/04 03:42

noppefoxwolf

総合スコア231

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chibikurosan

2015/02/04 04:12

早速ありがとうございます!! tapイベント時に、userInteractionEnabledをfor文で回して対応します。。! 力技な気がしますが、なんとか解決できそうです! ありがとうございました!!!!
noppefoxwolf

2015/02/04 04:14

ViewControllerのViewのuserInteractionEnabledをfalseにすれば一回だけで済みます。 また、UIButtonに限定するならばuserInteractionEnabledよりもenableプロパティが適切かと思います。
chibikurosan

2015/02/04 04:42

ご詳細にありがとうございます!!m(_ _)m 教えて頂いたview自体にenableで対応できました。! self.view.userInteractionEnabled = false UIButtonを個別に制御する必要がでた際は、 enableプロパティも活用したいと思います!! ご丁寧ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問