我已經提到了這個但對我不起作用:如何攔截點擊 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。
uj5u.com熱心網友回復:
如果沒有呼叫委托方法,通常是因為兩個潛在問題:
委托方法不正確。可能會出現拼寫錯誤,因此該物件沒有實作委托方法,它實作了另一種方法,該方法的簽名幾乎與委托類似,但又不一樣。在內部,物件可以檢查是否存在委托集,以及委托是否實作了該方法,在這種情況下它沒有實作,然后不呼叫它。
最常遇到的錯誤是未設定委托。你寫[ _myTextView.delegate self]的是 , 而不是[_myTextView setDelegate:self]or _myTextView.delegate = self。您沒有正確設定委托。相反,您正在呼叫 getter/method selfon _myTextView,它回傳_myTextView。您決定通過 Interface Builder (Storyboard/Xib) 設定委托,但修復呼叫也可以解決您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/462958.html
