当单击DatePicker时,UITapGestureRecognizer无法正常工作

5
我正在使用以下代码来在用户点击文本框之外时消除键盘:
override func viewDidLoad() {
   ...
   let tapGesture = UITapGestureRecognizer(target: self, action: "tap:")
   view.addGestureRecognizer(tapGesture)
   ...
}

func tap(gesture: UITapGestureRecognizer) {
        txtName.resignFirstResponder()
}

当用户点击文本框以外的任何地方,但不是日期选择器时,它会起作用。当他输入名称然后点击日期选择器(只需点击,而不是滚动)时,该操作无法识别。

我应该怎么做才能使其正常工作?

1个回答

4

有可能DatePicker的手势识别器与您的手势识别器发生干扰。尝试修改此函数是否有助于解决问题。

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true //Obviously think about the logic of what to return in various cases
}

抱歉,我应该在第二个参数上放什么?因为我没有给我的DatePicker添加任何特殊的手势识别器。 - Mucida
不,但会有多个 GR 处于活动状态,对吧?至少 DP 上会有一个,在视图控制器上声明的那个是为了与文本字段相配合。你应该在代码中添加这个覆盖方法并设置断点,查看正在运行的 GR。结果可能会让你惊讶。 - Carlos
我不知道这里应该放什么……gestureRecognizer(gestureRecognizer: tapGesture, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: ????????) - Mucida
打印出两个GR是什么,并思考每种情况下的结果应该是什么。 - Carlos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接