2009-08-07 48 views
4

我想實現的一個UITextView字符計數器,但發現櫃檯在以下情況不準確的:UITextView textView:shouldChangeTextInRange:replacementText:在刪除大部分文本時不會觸發?

  • 輸入文本的幾個字符,如「」
  • 點擊返回25次
  • 按住刪除按鈕刪除文本(並按住它直到光標到達頂部)
  • 當光標到達頂部時(並且在刪除「The」之後),計數器仍然會說UITextView包含3個字符
  • Tap刪除按鈕一次有計數改正,說有0個字符

我輸出的計數器在這種情況下的結果和replacementText和最後的輸出如下:

2009-08-06 15:29:14.357特徵:3
2009-08-06 15:29:14.369

因此,看起來當大量的換行符(也許大部分文本)以這種方式被一起刪除,textView:shouldChangeTextInRange:replacementText:在該序列結束時不被觸發,requiri刪除按鈕的添加點擊。

我的計數器代碼如下:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 
    NSString* nextText = [textView.text stringByReplacingCharactersInRange:range withString:text]; 
    int characterCount = [nextText length]; 

如何克服這一因此計數是正確的在這種情況下(或者我可能是錯的做)任何想法?

回答

2

我仍然不知道有關textView的問題:shouldChangeTextInRange:replacementText:沒有被調用,但我剛剛發現將我的計數器代碼放入textViewDidChange :(這是該代碼更合乎邏輯的位置)按預期工作。

+0

我認爲這不是一個合適的決議。它不提供原始方法所具有的複雜性。 – gamma 2011-08-02 12:58:19

相關問題