ios - 将点击事件传递给超级视图但处理长按
问题描述
我正在尝试将点击事件传递给超级视图但处理长按事件。我已将 LongPressGestureRecognizer 添加到顶视图,但点击事件未传递给超级视图。我尝试了多种方法:
- 覆盖 hitTest 不起作用,因为长按手势识别器处理程序没有被调用
- isUserInteractionEnabled - 同上
- 覆盖 touchesBegan/Ended 并在超级视图上手动调用它们不会触发点击事件
解决方案
处理复杂的点击交互可能很困难,而混合不同的方法会使它变得更加困难。
通常,处理它的最佳方法是拥有一个具有多个手势识别器的视图。实现UIGestureRecognizerDelegate
方法gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
并gestureRecognizer(_:shouldRequireFailureOf:)
处理冲突。当一个触摸事件被识别时,它可以将动作委托给任何其他需要处理它的对象。不同的观点都试图同时处理触摸并不是处理问题的好方法。手势依赖于其他手势,不能全部由不同的视图独立处理。
推荐阅读
- r - 创建一个集成到 R 中的函数
- ros - 收到消息时如何终止 ros spin
- android - Flutter 中的 TextArea 格式化
- sql - 索引提示中指定的 Oracle 索引无效
- r - 将按钮放在闪亮仪表板的标题中时标题样式不起作用
- sparql - SPARQL 中用于操作 IRI 的函数?
- javascript - 从另一个页面链接到手风琴的一部分后滚动
- get - 如何通过按 Enter 键获取 SlickGrid 中的行号 - 已解决
- multithreading - 带有 Rust `Sender` 和 Rayon 的 `for_each_with()` 的嵌套循环
- regex - 如何使用正则表达式在提取的结果中包含换行符