1

我有一个 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)];

}

有谁知道如何同时启用自动完成和委托集?

谢谢!
特里斯坦

4

3 回答 3

0

得到这个:你需要做的就是从你的界面(.h)文件中删除 UITextViewDelegate 。

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

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

于 2012-12-11T13:02:43.933 回答
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 方法。

于 2010-04-01T01:12:51.320 回答
0

它可能会破坏自动完成,因为您同时修改UITextView.

于 2010-03-25T01:21:45.153 回答