【发布时间】:2017-05-03 17:32:12
【问题描述】:
我想在我的一个视图中添加一个手势识别器来检测点击, 这是我的代码:
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
}
}
当我点击我的视图时,代码进入gestureRecognizer shouldReceive 方法并进入返回true 的条件。
但是onTap 方法从来没有被调用过,谁能告诉我为什么?
编辑
添加self.isUserInteractionEnabled = true 我设法让它工作。
但它有一个奇怪的行为:就像它只在主视图中而不是在子视图中接收到点击。
因此,为了简单起见,我通过在视图中添加一个按钮并使用以下方法解决了问题:
self.button?.addTarget(self, action: #selector(onTap), for: .touchUpInside)
【问题讨论】:
-
你在点击什么来调用你的
onTap方法? -
全视图
-
您在选择器中缺少参数部分。
标签: ios swift uigesturerecognizer