Swift:按钮单击停止父视图上的 tapGestureDidRecognize

Posted

技术标签:

【中文标题】Swift:按钮单击停止父视图上的 tapGestureDidRecognize【英文标题】:Swift : Button click stops tapGestureDidRecognize on the parent View 【发布时间】:2016-12-18 22:46:23 【问题描述】:

是否可以单击按钮并让点击滴到按钮的父视图?我尝试禁用按钮并检测到点击,但是是否可以点击按钮,做一些事情然后让点击事件滴下来?

UIViewControllerWrapperView 包含 UIView 包含 UIView 包含 UIButton

当我点击/按下按钮时,应该是这样的,

点击按钮 > UIView 被点击 > UIView 被点击 > UIViewControllerWrapperView 检测点击

编辑: 我可以在 UIViewControllerWrapperView 上检测到点击,但是,如果我点击按钮,则不会检测到点击,因为我假设点击事件由按钮处理,这反过来又阻止点击被下面的视图检测到。

【问题讨论】:

你的问题不太清楚。你想在 UIViewControllerWrapperView 中检测触摸吗? 嗨 Sandeep,我编辑了我的问题以便更好地澄清 - 谢谢。 this post 有帮助吗?您可能需要覆盖其他事件,例如 touchesEnded 和 touchesCancelled。 【参考方案1】:

isUserInteractionEnabled 属性

尝试将 UIButton 的 isUserInteractionEnabled 属性设置为 false。 UIButton 的默认值为 true

请注意,isUserInteractionEnabled 是在 UIButton 继承自的 UIView 类上声明的。

 

在代码中设置isUserInteractionEnabled

button.isUserInteractionEnabled = false

 

在界面生成器中设置isUserInteractionEnabled

在 UIButton 的属性检查器中:

【讨论】:

你好 Dan 谢谢你的回复,我知道 isUserInteractionEnabled 会让点击通过,但它也不会识别点击本身,我不希望点击是排他性的而是包容性的,可用于按钮和底层视图?谢谢 嗨@Marin,我应该知道这不会那么容易!我将把我的答案留在这里,以便其他人可以排除它,以防它有助于解决问题。 你好 Dan,我最终覆盖了 UIApplication 并结合你的输入,我关闭了 User Interaction Enabled,能够使我的案例工作,尽管更像是一个 hack。谢谢!

以上是关于Swift:按钮单击停止父视图上的 tapGestureDidRecognize的主要内容,如果未能解决你的问题,请参考以下文章

通过单击 Swift 3 中的 Alert Ok 按钮,翻转回同一视图控制器上的另一个视图

iOS Swift 在视图关闭时停止 MoviePlayer

在 Swift 中单击以编程方式切换到 TableViewCell 上的导航视图

Swift - 表格视图单元格内的单击按钮不会在该单元格的功能处调用确实选择行

我在UIWebView中加载Web视图,我需要单击网站上的登录按钮

可以在角度调用父组件功能时单击子组件上的任何按钮? [关闭]