UITextView shouldInteractWithURL 委托方法不能通过超链接工作

UITextView shouldInteractWithURL delegate methods not working through hyperlink

我已经参考了这个但对我不起作用:How to intercept click on link in UITextView?

我在 UITextView 上有超链接文本,单击超链接文本我们必须打开另一个视图控制器。

创建超链接我已经这样做了

NSString *str = @"No products found for your pincode,Edit your pincode";
NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc]initWithString:str attributes:nil];
[aStr addAttribute:NSLinkAttributeName value:@"https://www.google.com/" range:[str rangeOfString:@"Edit your pincode"]];
[self.myTextView setAttributedText:aStr];

打开AnotherViewController 我使用了UITextView shouldInteractWithURL 委托方法。

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction{

    TATViewController *tatVC = [[self getStoryboardWithStoryboardType: kListingStoryboard] instantiateViewControllerWithIdentifier: @"TATViewControllerID"];
    [self.navigationController presentViewController: tatVC animated:true completion:nil];
    return false;
}

我的问题是如何管理 TextView 委托代码和超链接代码来打开 ViewController。

如果委托方法没有被调用,通常是因为两个潜在的问题:

委托方法不正确。可能会出现拼写错误,因此该对象未实现委托方法,它实现了另一种方法,该方法的签名几乎与委托方法相似,但不相同。 在内部,该对象可以检查是否有委托集,以及委托是否实现了该方法,在这种情况下它没有实现,然后不调用它。

最常遇到的错误是未设置委托。 您写了 [ _myTextView.delegate self],而不是 [_myTextView setDelegate:self]_myTextView.delegate = self。您没有正确设置代表。相反,您在 _myTextView 上调用 getter/method self,return _myTextView。 您决定通过 Interface Builder (Storyboard/Xib) 设置委托,但修复调用也会解决您的问题。