轻击手势识别器会干扰UITextView中的URL轻敲

问题描述 投票:1回答:3

我有一个已禁用的文本视图,其中附加了点击手势识别器。问题在于该手势识别器会拦截所有点击,包括在自动检测到的URL上进行的点击(文本视图已打开数据检测器)。有什么方法可以防止它发生,因此,当用户点击一个URL时,它由文本视图本身处理(在Safari中打开),而当用户点击其他位置时,则称为我的手势识别器?

ios iphone objective-c uitextview
3个回答
1
投票

[最好的方法是,您可以访问数据检测器使用的手势识别器(然后通过使用代理人的gestureRecognizer:shouldRequireFailureOfGestureRecognizer:等指定您的敲击识别器的优先级应低于该优先级),但是我不认为这是可能的(如果我错了,任何人都可以在这里纠正我)。

相反,您可以尝试将委托添加到文本视图,并检查在手势识别器的有效期内是否调用了textView:shouldInteractWithURL:inRange:(然后仅在未由UITextView处理时才运行处理程序)。


0
投票

请确保您的textview不是其他视图的子视图。如果它是子视图,则为顶视图添加UITextViewDelegate,然后在viewDidLoad

中添加此视图。
 - (void)viewDidLoad
{
    [super viewDidLoad];
    yourTextview.delegate = self;
    yourTextview.editable = NO;
    yourTextview.selectable = YES;
    ...
}

0
投票

有点古怪,但是可以用:

if let recognizers = yourTextView.gestureRecognizers {
    for recognizer in recognizers {
        if recognizer.name == "UITextInteractionNameLinkTap" {
            myCustomTapGestureRecognizer.require(toFail: recognizer)
        }
    }
}

用于检测链接的识别器的名称是“ UITextInteractionNameLinkTap”

© www.soinside.com 2019 - 2024. All rights reserved.