【发布时间】:2017-02-18 21:15:04
【问题描述】:
我在视图上设置了 UITapGestureRecognizer。只有视图中的特定区域需要触发视图的行为。我通过检查触摸的确切位置是否在视图中的实际可操作区域来做到这一点。如果触摸不在这些区域,我希望点击在视图层次结构中向上传播。
我尝试使用手势委托:shouldReceive touch,并在那里测试触摸是否与视图相关,但我无法在那里执行操作,因为它在触摸时触发,而不是在点击时触发。我可以在 shouldReceive 中执行相关性测试,并且只有当点击动作处理程序被调用时才执行该动作,但我觉得这很尴尬。有没有更优雅的方式告诉 iOS 我的手势识别器决定不使用点击?
【问题讨论】:
-
可以分享一些相关代码吗?应该触发轻击手势的特定区域是否与其他视图类型不同?
-
在实践中,我处理的视图是一个带有属性字符串的 UITextView,其中只有部分标记有自定义点击操作。所以在我的行动中,我首先测试水龙头是否接触到任何这些区域,如果没有,什么都不做(最好不要消耗水龙头)。
-
哇!如果使用
gestureRecognizer: shouldReceiveRouch涉及多个视图,那将是正确的方法。但是对于属性字符串,对于非平凡的用例,您应该依赖 Text Kit。不看任何代码,我只能建议检查这个特定的答案,这会有所帮助:stackoverflow.com/a/28519273/3339346 -
谢谢@ystack。幸运的是,我的属性字符串水龙头处理程序工作正常,并正确检测水龙头的位置。唯一的问题是当我的处理程序发现点击与文本无关时如何告诉 iOS。您的链接不包含在内。
-
你能不使用简单的
if-else围绕手势位置点进行视图计算来实现这一点吗?
标签: ios uiview uigesturerecognizer uitapgesturerecognizer