如何在textView

时间:2016-05-12 09:02:47

标签: hyperlink uitextview

在我的项目中,有一个关于UITextView的需求。当我点击UITextView中的链接时,我们的应用程序应该打开一个webview控制器来显示链接的内容;当我长按UITextView中的链接时,我们的应用程序应显示一些关于复制和粘贴的菜单。现在我可以在UIInputViewDelegate中实现第二种情况

(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange

虽然触发了shouldInteractWithURL,但我无法识别tap事件和长按事件之间的相对标记。

然后我在

结尾处断点
(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange

方法,我使用lldb查找有关点击事件和长按事件的一些信息,如下所示:

长记事件:

frame #1: 0x0000000112b46214 UIKit`-[_UITextViewInteractableLink allowInteraction] + 165
    frame #2: 0x0000000112b452c3 UIKit`-[_UITextViewInteractableItem handleLongPress] + 22
    frame #3: 0x0000000112b45055 UIKit`-[UITextView(LinkInteraction) validateInteractionWithLinkAtPoint:] + 287
    frame #4: 0x00000001125edac9 UIKit`-[UITextInteractionAssistant(UITextInteractionAssistant_Internal) longDelayRecognizer:] + 281
    frame #5: 0x00000001125dbb28 UIKit`_UIGestureRecognizerSendTargetActions + 153

点击事件:

frame #1: 0x0000000112b46214 UIKit`-[_UITextViewInteractableLink allowInteraction] + 165
    frame #2: 0x0000000112b45181 UIKit`-[_UITextViewInteractableItem handleTap] + 33
    frame #3: 0x0000000112b45055 UIKit`-[UITextView(LinkInteraction) validateInteractionWithLinkAtPoint:] + 287
    frame #4: 0x00000001125ed782 UIKit`-[UITextInteractionAssistant(UITextInteractionAssistant_Internal) 

我发现这两个事件存在一些差异; handleTap handleLongPress 会在不同的场景中触发。所以任何捕获长按事件或禁用系统长按事件的解决方案然后添加我自己的长按事件来处理UITextView中的linkedText上的长事件?

1 个答案:

答案 0 :(得分:0)

为什么要长按,如果它的超级链接只能在这里检查https://stackoverflow.com/a/37207783/5772601