UITextView textView:shouldChangeTextInRange:replacementText:在删除大部分文本时不会触发?

问题描述:

我想实现的一个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]; 

如何克服这一因此计数是正确的在这种情况下(或者我可能是错的做)任何想法?

我仍然不知道有关textView的问题:shouldChangeTextInRange:replacementText:没有被调用,但我刚刚发现将我的计数器代码放入textViewDidChange :(这是该代码更合乎逻辑的位置)按预期工作。

+0

我认为这不是一个合适的决议。它不提供原始方法所具有的复杂性。 – gamma 2011-08-02 12:58:19