Hyperlink 如何在textView中捕获链接的长按事件

Hyperlink 如何在textView中捕获链接的长按事件,hyperlink,uitextview,Hyperlink,Uitextview,在我的项目中,有一个关于UITextView的需求。当我点击UITextView中的链接时,我们的应用程序应该打开一个webview控制器来显示链接的内容;当我长按UITextView中的链接时,我们的应用程序应该会显示一些关于复制和粘贴的菜单。现在我可以在UIInputViewDelegate中实现第二种情况 (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)cha

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

(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
虽然启动了shouldInteractWithURL,但我无法识别tap事件和long press事件之间的相对标记

然后我在

(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) 

我发现这两件事有些不同handleTaphandleLongPress在不同场景中发射。那么,是否有任何解决方案可以捕获长按事件或禁用系统的长按事件,然后添加我自己的长按事件来处理UITextView中linkedText上的长事件

为什么要进行长按?如果它的超链接只需在此处选中一个复选框它就可以工作。

可能重复的是,此工具显然会中断长按事件。但是我如何与点击事件交互?最后,我自己检测超链接,并添加LongGestureRecognitor,UITextView的TapGestureRecognitor。当出现某些GestureRecognitor时,我会获取点击位置,找出点击位置的属性,然后获取超链接文本范围并执行我想要的操作,这是一个要求。长按可打开包含复制项的菜单,点击可跳转至webview控制器