在 iOS 上,如果主视图具有 UITapGestureRecognizer,则不会调用按钮操作。如何让它发挥作用?

Posted

技术标签:

【中文标题】在 iOS 上,如果主视图具有 UITapGestureRecognizer,则不会调用按钮操作。如何让它发挥作用?【英文标题】:On iOS, a button Action is not invoked if the main view has a UITapGestureRecognizer. How to make it work? 【发布时间】:2012-05-21 14:22:29 【问题描述】:

在使用 Xcode 4.3.2 的全新 ios 项目中,如果按钮具有使用 Interface Builder 创建的 Action,并且打印出 "button is tapped on",则一切正常。

但是,当主视图添加UITapGestureRecognizer 用于单击时,即使点击了按钮,也会认为主视图已被点击,但不会调用按钮 Action。

有没有办法让它工作? (是否建议不要使用Button Action,而是使用UITapGestureRecognizer作为按钮?但如果是滑块,那么我们确实需要Action)

【问题讨论】:

【参考方案1】:

排除[UIGestureRecognizer delegate]中的按钮或将cancelsTouchesInView设置为NO

【讨论】:

我试过了,gestureRegMainViewTappedOn.cancelsTouchesInView = NO; 效果很好。如果是[UIGestureRecognizer delegate],您介意添加吗,代码是什么样的?谢谢。

以上是关于在 iOS 上,如果主视图具有 UITapGestureRecognizer,则不会调用按钮操作。如何让它发挥作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建具有适当不透明度的 UITextField 附件视图 iOS7,甚至复制键?

在 iOS 中具有背景颜色的集合视图单元格上添加图像

Xamarin iOS - 具有速度的 UIView 动画

iOS:自适应集合视图单元格宽度

iOS 在 applicationWillEnterForeground 之前删除视图

具有文本字段滚动问题的 iOS 表格视图