UIGestureRecognizer 没有响应 swift 3.0

UIGestureRecognizer didn't respond swift 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")
    }
}

您正在覆盖 loadView。只有当您实际创建视图并将其分配给 self.view.

时,才应该覆盖它

更改您的代码以覆盖 viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.addGestureRecognizer(gestureRecognizerForSetCardFace)
}

您需要添加一些内容 -

  • 为您的手势添加 Lazy var

Lazy properties are useful when the initial value for a property is dependent on outside factors whose values are not known until after an instance’s initialization is complete.

lazy var gestureRecognizerForSetCardFace: UIPanGestureRecognizer = {
        let recognizer = UIPanGestureRecognizer(target: self, action: #selector(handleSetGesture(gesture:)))
        recognizer.maximumNumberOfTouches = 1
        return recognizer
    }()
  • viewdidLoad
  • 中添加手势识别器

Called after the controller's view is loaded into memory.

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