iphone设置UITextView委托打破自动完成

时间:2010-03-24 23:45:27

标签: iphone autocomplete delegates uitextview uitextviewdelegate

我有一个UITextField,我希望通过以下方式启用自动完成:

[self.textView setAutocorrectionType:UITextAutocorrectionTypeYes];

这是正常的,除非我给UITextView一个委托。设置委托后,自动完成只会停止工作。代表只有以下方法:

- (void)textViewDidChange:(UITextView *)textView
{
 self.textView.text = [self.textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""];

 int left = LENGTH_MAX -[self.textView.text length];
 self.characterCountLabel.text = [NSString stringWithFormat:@"%i",abs(left)];

}

有谁知道如何启用自动完成和委托设置?

谢谢!
特里斯坦

3 个答案:

答案 0 :(得分:0)

它可能会破坏自动完成功能,因为您正在同时修改UITextView中的文字。

答案 1 :(得分:0)

NSRange r= [self.textView.text rangeOfString:@"\n"];
if(r.location!=NSNotFound) //must check before replacing new lines right away, otherwise spellcheck gets broken
{
    self.textView.text = [self.textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""];
}

问题是由于每次更改时都可能会修改文本(即调用replace方法)。解决方案是只在必要时调用replace方法。

答案 2 :(得分:0)

获取此信息:您需要做的就是从界面(.h)文件中删除UITextViewDelegate。

您仍然可以将委托设置为笔尖中的textView。

奇怪,对吗?为我工作,我希望它也能解决你的问题。