2016-08-04 3 views
0

UITapGestureRecognizer에서 UIView를 사용하고 있습니다. 나는의 ViewController의 컨테이너 뷰 탭 인식을 가지고있는 반면에 , 난 내 내면의 뷰 탭 이제UITapGestureRecognizer가 UIView의 최상위 점에서 작동하지 않습니다.

, 그것은

, 핸들러를 호출하지만, 예를 들어 그것의 40 개 위 지점에 탭하면, 그것은 작동하지 않고 컨테이너의 탭 인식기가 작동합니다 !!! 실제로 실제로 UIView 안에 있다고 확신합니다. 배경색을 다른 색으로 변경했는데 다른 뷰는 없습니다. 이 견해에 대해서도!

정말 짜증나, 모든 것을 테스트하고, 모든 뷰를 숨기며, 다른 인식기를 사용하지 않도록 설정했습니다. 그리고이 U I TAP 인식기를 사용하여 내 처음이 아니다 : ///

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

편집 : 내가 찾은

그 난 내 UITextView, 주요 컨테이너의 탭 이벤트 부하 여기에 접촉하는 경우에도! 하지만 다른 관점, 아니! ::

HERE!!

+0

에도 해당 내 UITextView 어딘가에 누를 때'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). 예. 인식기 1은 터치 포인트가 TextView에 있으면 터치하지 않아야합니다 (터치 포인트 및 UITouch 값을 사용하여 뷰를 가져올 수 있음). CGPoint point = [touch locationInView : view]; if (CGRectContainsPoint (textView.frame, point)) – RJE

+0

내가 알고 있고 작동하지 않는 것을 테스트했습니다. 대답에 wrongView1의 정의 문을 추가하십시오. –

관련 문제