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)
}
当我在视图上平移时它没有反应。以下代码显示了我如何设置手势识别器。我的代码有什么问题?
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)
}