2016-08-04 6 views
0

私はUITapGestureRecognizerでUIViewを使用しています。一方 私はそれは、私は私の内側のビューをタップしたときにUITapGestureRecognizerがUIViewのトップポイントで動作しない

は今、それは、ハンドラを呼び出す

しかし、私は例えばそれの40個の上部のポイントを上タップすると、のViewControllerのコンテナビューにタップ認識を持っています実際に私はそれがUIViewの内部にあると確信しています、私はそれを別の色に背景を変更したと確信していますが、他のビューはありませんこのビューでも!

これは本当に面倒です。私はすべてをテストし、すべてのビューを隠し、他の認識ツールを無効にしています。そして、それはこのU I TAP認識を使用して、私の初めてではない:///

view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewController.dismissKeyboard(_:)))) 
    viewWrite.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewController.viewPressed(_:)))) 

EDIT ::

私は、私は私のUITextViewにここで触れた場合にもいることをメインコンテナのタップイベントの負荷を見つけました!しかし、他の視点は、いいえ! ::

HERE!!

+0

私はUITextViewのどこかをタップすると「dismiss keyboard」と呼ばれています。 –

+0

タップの位置と表示を示す画像を投稿してください。 – Fujia

+0

添付画像@Fujia –

答えて

0

あなたはUIGestureRecognizerDelegate

などを実装してみてください。

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if (gestureRecognizer == recoginiser1 && wrongview1) return false 
    if (gestureRecognizer == recoginiser2 && wrongview2) return false 
    else return true; 
} 

wrongviewはこのような意味です。

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if (gestureRecognizer == recognizer1){ 
    let point = touch.locationInView(self.view) 
     if CGRectContainsPoint(textView.frame, point) == true { 
      return false 
     } 
    } 
    return true 
} 
+0

あなたは 'wrongview1'をどういう意味ですか? –

+0

タッチを受ける必要のない任意のビュー/ビュー。 (例えば、あなたが上で述べたUITextView)。例えば。タッチポイントがTextViewにある場合、recogniser1はタッチしないでください(タッチポイントとUITouch値を使用してビューを取得できます)。CGPoint point = [touch locationInView:view]; if(CGRectContainsPoint(textView.frame、point)) – RJE

+0

私は知っているし、動作していないことをテストしました。 あなたの答えにwrongView1の定義文を追加してください。 –

関連する問題