【问题标题】:Swift how to detect if the UITextView link has been clicked or another part of the UITextViewSwift如何检测是否单击了UITextView链接或UITextView的另一部分
【发布时间】:2019-04-12 20:44:11
【问题描述】:

我有一个添加了 GestureRecognizer 的 UITextView。我还打开了 UITextView 的链接。对于两个点击事件,仅运行 UITextView 触摸(例如,单击链接不再打开地图)。我希望行为是链接触摸,否则如果他们没有触摸链接运行我的 GestureRecognizer。我该怎么做?

谢谢 马特

【问题讨论】:

  • 让我更好地理解...你有一个手势识别 2 个视图?不是更好的 2 个手势使用相同的选择器吗?
  • 您是否使您的手势识别器能够与其他识别器同时识别?无论如何,如果您这样做,您可能会恢复链接功能。但是现在这两个事件都会发生(链接和您的自定义点击)。您可能需要取消按下链接时的手势事件。也许是一个标志,或者偶然它可能足以立即禁用和重新启用它。
  • 感谢 Matic。你是正确的,使两者都能开火是我需要做的。我只需要知道要连接哪个事件来禁用链接点击事件触发或另一个。
  • 检查哪个先触发。如果首先是识别器,则设置一个计时器来触发您的事件并取消链接按下事件的计时器。如果首先出现链接按下事件,则要么暂时禁用手势识别器,要么创建一个类似ignoreNextGestureEvent 的布尔属性并将其设置为true。如果true 将其设置为falsereturn,则在事件中。

标签: ios swift uitextview uitapgesturerecognizer


【解决方案1】:

您必须拥有selectable == trueUITextView 才能识别链接上的点击。此外,您必须从 textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) 委托调用返回 true 才能实际打开链接。成为手势识别器的代表并从gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) 返回 true 也是一个好主意。

否则,文本视图上安装的手势识别器之间应该没有干扰:如果您点击链接,它将打开;在其他地方点击会触发手势识别器(在点击识别器的情况下)。

【讨论】:

  • 嘿塔马斯。两种手势都被识别(链接和点击)。该链接仅在单击链接时触发,但点击也会触发。单击没有链接的文本视图不会触发链接事件。需要在点击手势中识别用户点击链接的方式。
猜你喜欢
  • 1970-01-01
  • 2018-11-26
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多