all*_*tio 2 uigesturerecognizer ios swift
我想将手势识别器添加到我的视图之一以检测点击,这是我的代码:
class DateTimeContainer: UIView, UIGestureRecognizerDelegate {
override func awakeFromNib() {
let gesture = UITapGestureRecognizer(target: self, action: #selector(self.onTap))
gesture.delegate = self
self.addGestureRecognizer(gesture)
}
func onTap(_ gestureRecognizer: UITapGestureRecognizer) {
openDatePicker()
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view?.tag != self.datePickerTag && !self.isDatePickerOpen() {
return true
}
return false
}
}
Run Code Online (Sandbox Code Playgroud)
当我点击视图时,代码进入该gestureRecognizer shouldReceive方法并输入返回 true 的条件。
但该onTap方法从未被调用,有人能告诉我为什么吗?
编辑
添加self.isUserInteractionEnabled = true我设法让它工作。但它有一个奇怪的行为:就像它只在主视图中收到点击,而不是在子视图中收到点击。因此,为了简单起见,我通过在视图中添加一个按钮并使用以下方法解决了这个问题:
self.button?.addTarget(self, action: #selector(onTap), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)
您可能忘记执行此操作:
self.isUserInteractionEnabled = true
Run Code Online (Sandbox Code Playgroud)
此外,通常 UIViewController 子类通常是目标并包含用于点击手势的方法。
您不需要为点击手势设置委托(通常)
| 归档时间: |
|
| 查看次数: |
5041 次 |
| 最近记录: |