我有一個UITextView
在我的應用程序,它是用來顯示一些字符串與數字。這些號碼可以是電話號碼或特定於應用的其他號碼。如果用戶點擊電話號碼,則應詢問他們是否要撥打電話(這是默認完成的)。但是,如果用戶點擊另一個不是電話號碼但是特定於該應用的號碼,則該操作應該是自定義的,例如,它應該在視圖控制器中以數字作爲參數來調用一個方法。UITextView自定義動作點擊數
我有一個快速搜索,但找不到任何簡單的解決方案。
任何想法如何做到這一點?任何幫助,將不勝感激。
我有一個UITextView
在我的應用程序,它是用來顯示一些字符串與數字。這些號碼可以是電話號碼或特定於應用的其他號碼。如果用戶點擊電話號碼,則應詢問他們是否要撥打電話(這是默認完成的)。但是,如果用戶點擊另一個不是電話號碼但是特定於該應用的號碼,則該操作應該是自定義的,例如,它應該在視圖控制器中以數字作爲參數來調用一個方法。UITextView自定義動作點擊數
我有一個快速搜索,但找不到任何簡單的解決方案。
任何想法如何做到這一點?任何幫助,將不勝感激。
添加UITapGestureRecognizer到的UITextView藉助其委託設置爲父的UIViewController:
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleTap:)];
[myTextView addGestureRecognizer:recognizer];
的添加處理方法到您的UIViewController:
- (void)handleTap:(UITapGestureRecognizer *)sender{
UITextView *textView = (UITextView*)sender;
NSString *number = textView.text;
}
埃塔:你需要UIGestureRecognizerDelegate添加爲一個協議到你的UIViewController太:
@interface MyViewController : UIViewController <UIGestureRecognizerDelegate>
更新:
如何使用UITextViewDelegate方法textViewDidChangeSelection呢?
檢查textview的selectedRange屬性以檢查其內容。
我能夠通過實現'UITextViewDelegate'來解決這個問題。
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
DLog(@"URL is %@", URL.absoluteString)
NSString *host = [URL host];
NSNumber *adIdInLink = nil;
NSRange range = NSMakeRange(0, 3);
NSString *subString = [URL.absoluteString substringWithRange:range];
if ([subString isEqualToString:@"tel"] && !host) {
// this is a number - do whatever you want
NSString *stringWithAdId = [URL.absoluteString substringFromIndex:4];
if ([HJUtilities isValidAdId:stringWithAdId]) {
// this is the ad Id a custom number used in my app
adIdInLink = [NSNumber numberWithInteger:[stringWithAdId integerValue]];
}
else {
// this was a phone number - let the default behaviour
return YES;
}
}
}
這是行不通的。首先,只能在點擊數字時才調用該方法(而不是整個textView)。第2個textView中的文本不僅是該數字,還包含其他字符串,並且使用默認檢測高亮顯示數字。謝謝! –
.-。,你真的只想要數字而不是保存數字的視圖的像素檢測? –
@JohnRiselvato不,我不需要像素檢測。這些數字在textView中突出顯示。我只想覆蓋點擊數字的默認行爲。默認情況下,它要求發起對該號碼的呼叫。 –