2017-01-16 1 views
2

내 탭이 뷰 내부에 있는지 또는 뷰 외부에 있는지 확인하기 위해 코드 부분을 개발하려고합니다. pointInside 메소드로 시도했습니다. A가 기본보기 컨트롤러이고 B가 A의 하위보기 인 경우 B 내부에서 탭 한 사용자를 알 수있는 방법은 무엇입니까?탭이 신속하게보기 또는 바깥에 있는지 여부

답변

4

애플은 Responder Chain에서 매우 잘 설명합니다. 보기 컨트롤러에 다음 함수를 추가 할 수 있습니다.

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
    if let firstTouch = touches.first { 
     let hitView = self.view.hitTest(firstTouch.location(in: self.view), with: event) 

     if hitView === viewB { 
      print("touch is inside") 
     } else { 
      print("touch is outside") 
     } 
    } 
} 
+0

'with'매개 변수에 대한 호출이 누락되었습니다. 나는 그것을 얻지 않았다. – Joe

+0

감사합니다. 그것은 나를 위해 일했습니다 .... – Aayushi

+0

일부 대리인을 설정해야합니까? 이후 해고되지 않습니다. –

3

tapGestureRecognizer 콜백에서 tapGesture.location(in: A) 콜백에서 x 위치와 y 위치를 가져올 수 있습니다. 추천 시스템. 그런 다음 B.frame.contains(location)을 사용할 수 있습니다.

true의 경우, 다음 탭이 문제에 간단한 방법이있다 수행하려는 작업에 따라 B.

입니다. 예를 들어 B 내부에 닿기 만하면 A 대신 B에 gestureRecognizer을 추가 할 수 있습니다.

어떤 것이 정확히 필요한지 잘 모르겠습니다. 더 많은 정보를 통해 당신에게 더 나은 조언을 줄 수 있습니다.

관련 문제