我已经创建了我的自定义视图:
class CircleToggleView: UIView {
lazy var panGesture: UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panHandler))
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initializeView()
}
override init(frame: CGRect) {
super.init(frame: frame)
initializeView()
}
override func layoutSubviews() {
layer.cornerRadius = bounds.width / 2
}
private func initializeView() {
self.addGestureRecognizer(panGesture)
}
func panHandler() {
print("pan")
}
}
没什么好看的,只是打印" pan"在每个泛手势上。一切正常,但如果我改变第一行,那么有趣的是:
lazy var panGesture: UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panHandler))
到此:
lazy var panGesture = UIPanGestureRecognizer(target: self, action: #selector(panHandler))
处理程序不再被调用。我无法理解为什么,任何人都能解释我的意思吗?为什么我必须明确声明类型?