停止 UIGestureRecognizer 对 UIView 内的 UIButtons 进行操作

Posted

技术标签:

【中文标题】停止 UIGestureRecognizer 对 UIView 内的 UIButtons 进行操作【英文标题】:Stop a UIGestureRecognizer from operating on UIButtons inside a UIView 【发布时间】:2012-12-04 15:34:50 【问题描述】:

我已在我的应用程序中将UITapGestureRecognizer 附加到UIView。如果用户双击它,该视图内的按钮会随机重新排列。工作正常,可爱。

但是,用户也可以通过双击其中一个按钮来触发此操作,甚至可以通过点击屏幕不同部分的两个按钮来触发。

只有当两次点击在x 像素数范围内,并且在视图本身上,而不是其中的任何元素(例如这些UIButtons)时,是否有一种明智/简单的方法来让这种双击工作?

【问题讨论】:

【参考方案1】:

我认为通常的方法是使用shouldReceiveTouch。查看this question 进行冗长的讨论和所有详细信息。

【讨论】:

【参考方案2】:

执行此操作的一种方法是将单击手势识别器附加到按钮 - 这将抢占按钮的正常触摸事件,因此您必须将按钮的操作方法放入手势识别器的操作方法中。然后,您将向双击器添加一个依赖项,使其仅在单击器失败时触发:

[self.doubleTapper requireGestureRecognizerToFail:self.tapper];

【讨论】:

我实际上已经在按钮上有了一个,效果很好。但是双击按钮仍然会触发视图的双击方法。 @lukech,你确定你的插座连接正确吗?我已经对此进行了测试,它对我有用。

以上是关于停止 UIGestureRecognizer 对 UIView 内的 UIButtons 进行操作的主要内容,如果未能解决你的问题,请参考以下文章

`UIGestureRecognizer`命中测试

有时在 UIGestureRecognizer 处理程序后未触发 IBAction

RxSwift之UI控件UIGestureRecognizer扩展的使用

UIGestureRecognizer

点击按钮时取消 UIGestureRecognizer?

UIGestureRecognizer