2017-01-05 7 views
2

를 수신하지 여기 내 코드입니다 메서드를 호출하고 true를 반환하는 조건을 입력합니다.스위프트 3 UITapGestureRecognizer 내가 탭을 감지하는 내보기 중 하나에 제스처 인식기를 추가 할 탭

그러나 onTap 메서드는 호출되지 않습니다. 누군가 그 이유를 말해 줄 수 있습니까? 추가 self.isUserInteractionEnabled = true

편집

나는이 작업을 얻을 수 있었다. 하지만 이상한 행동을 보였습니다. 메인 뷰에서만 탭을 받았고 서브 뷰에서는 탭을받지 못한 것 같았습니다.

self.button?.addTarget(self, action: #selector(onTap), for: .touchUpInside) 
+0

당신은 무엇을 두드리고있다 'onTap' 메서드를 호출할까요? – jo3birdtalk

+0

전체보기 – allemattio

+0

선택기에서 매개 변수 부분이 누락되었습니다. – HAS

답변

0

나는 것으로 나타났습니다 awakeFromNib()

0

let gesture = UITapGestureRecognizer(target: self, action: #selector(self.onTap)) 
     gesture.delegate = self 
     self.addGestureRecognizer(gesture) 

내부 init 블록이 아닌 코드를 작성하십시오 : 그래서 그것이 내가 내보기 내부에 버튼을 추가하고 사용하여 간단한 해결 만들려면 UIView에 제스처를 추가하고 있습니다. 따라서이 컨테이너 뷰를 추가 한 ViewController에서 viewDidLoad 메서드 안에이 코드 줄을 추가하십시오.

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.YourContainerView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(YourCurrentViewController.openDatePicker()))) 
    self.YourContainerView.isUserInteractionEnabled = true 
} 

참고. 사실 isUserInteractionEnabled을 추가하는 것을 잊지 마십시오.

3

당신은이 일을 잊어 버린 수 있습니다

self.isUserInteractionEnabled = true 

는 또한, 일반적으로 UIViewController 하위 일반적으로 대상 및 탭 제스처에 사용되는 방법이 포함되어 있습니다.

당신은 (보통) 탭 제스처

+0

조치를 수행하기 위해 탭을 처리 할 때 차별하는 대리인이 필요합니다. – allemattio

1

에 대한 대리자를 설정할 필요가 없습니다 할 수 있습니다 당신 제스처

let recognizer = UITapGestureRecognizer(target: self,action:#selector(self.handleTap(recognizer:))) 
userImage.isUserInteractionEnabled = true 
    recognizer.delegate = self as? UIGestureRecognizerDelegate 
userImage.addGestureRecognizer(recognizer) 

그리고 메소드 호출 선택

func handleTap(recognizer:UITapGestureRecognizer) { 

      // do your coding here on method 



     }