2012-08-22 71 views
3

我創建了一個UITextView它允許動態標記時,用戶鍵入@UITextView檢測字符刪除

是否可以檢測到@已刪除,以便停止我創建的特定標記過程?如果是這樣,我該怎麼做? UITextView沒有這樣的委託方法。

+0

你能否詳細闡述'動態標記'。你怎麼實現這個? – KDaker

回答

1

我會用

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

然後創建在其中存儲的最後一個字符添加到UITextViewNSString。在上面的方法中,添加下面的代碼片段。

if ([text isEqualToString:@""] && [lastRecordedString [email protected]"@"]) { 
    //do whatever you want to do when an @ is deleted 
} 

lastRecordedString = [textView.text substringFromIndex:[string length]-1]; 

編輯:請參閱上面編輯的代碼。現在lastRecordedString是除去字符後UITextView中的最後一個字符。這應該工作。

+0

當文本等於'shouldChangeTextInRange'中的''「'時,它是否必須是退格? – darksky

+0

它還可能是什麼? – James

+0

這種方式只假定用戶輸入了「@」,然後將其刪除。如果用戶輸入了@ @Hello並刪除了所有內容,該怎麼辦?最後錄製的字符串仍然是「o」。 – darksky

1

你可以將使用被替換原文:

NSString *originalText = [textView.text substringWithRange:range]; 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

方法。

然後,做

if ([originalText rangeOfString:@"tag"].length > 0) { 
    NSLog(@"delete tag string"); 
} 

如果用戶刪除某個特定的字符串你會發現。

希望有幫助!