2017-11-17 9 views
0

보기에서 팬하면 반응하지 않았습니다. 다음 코드는 제스처 인식기를 설정하는 방법을 보여줍니다. 내 코드에 무슨 문제가 있습니까?UIGestureRecognizer가 응답하지 않았습니다. 3.0

class MyViewController : UIViewController { 
    override func loadView() { 
     self.view.addGestureRecognizer(gestureRecognizerForSetCardFace) 
    } 

    var gestureRecognizerForSetCardFace: UIPanGestureRecognizer = { 
     let recognizer = UIPanGestureRecognizer(target: self, action: #selector(handleSetGesture(gesture:))) 
     recognizer.maximumNumberOfTouches = 1 
     return recognizer 
    }() 

    @objc func handleSetGesture(gesture: UIPanGestureRecognizer){ 
     print("pan") 
    } 
} 
+0

메인보기 위의 높은 Z- 인덱스있는 모든 서브 뷰가 있습니까? –

+0

대신에'viewDidLoad()'를 사용해야합니다. – Mannopson

답변

0

커플 당신은 추가 할 필요가 -

  • 당신의 제스처 Lazy var를 추가합니다. 속성의 초기 값은 그 값이 아닌 인스턴스의 초기화가 완료 될 때까지 알려진 요인에 의존 할 때

레이지 특성은 유용하다. 컨트롤러의 뷰가 메모리로로드 된 후

lazy var gestureRecognizerForSetCardFace: UIPanGestureRecognizer = { 
     let recognizer = UIPanGestureRecognizer(target: self, action: #selector(handleSetGesture(gesture:))) 
     recognizer.maximumNumberOfTouches = 1 
     return recognizer 
    }() 
  • 는 호출 viewdidLoad

에서 제스처 인식기를 추가한다.

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.view.addGestureRecognizer(gestureRecognizerForSetCardFace) 
} 
+0

당신의 설명을위한 감사합니다 !!! – InvisibleMike

1

loadView을 무시하고 있습니다. 뷰를 실제로 만들고이를 self.view에 할당하는 경우에만 재정의해야합니다.

viewDidLoad 대신 코드를 변경하십시오. 사물의

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.view.addGestureRecognizer(gestureRecognizerForSetCardFace) 
} 
관련 문제