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 :(这是该代码更合乎逻辑的位置)按预期工作。
我认为这不是一个合适的决议。它不提供原始方法所具有的复杂性。 – gamma 2011-08-02 12:58:19