我的iPhone应用程序中有一个UITextView,我希望能够切换autocorrectionType。
当用户编辑文本视图时,我希望将autocorrectionType设置为UIAutocorrectionTypeYes。 当没有编辑文本视图时,我希望将autocorrectionType设置为UIAutocorrectionTypeNo(因为我不希望自动更正生成的任何红点划线都可见)
只需切换autocorrectionType,如下所示:
myTextView.autocorrectionType = UITextAutocorrectionTypeYes;
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
似乎不起作用。 我何时可以切换autocorrectionType或在哪些情况下更改的autocorrectionType生效?是否存在限制?
修改
澄清: 初始化UITextView时,设置autocorrectionType没有问题。当我想要更改现有UITextView的autocorrectionType时,会出现问题。在我的情况下,我想在编辑UITextView时为用户提供自动更正的优势,但是当UITextView没有被编辑时,不希望用红色虚线下划线指出任何拼写错误 - 部分是因为我也在导出UIView包含UITextView作为图像。 问题是只更改我的UITextView的autocorrectionType属性的值不起作用。
答案 0 :(得分:10)
这是为图像导出方案执行此操作的简便方法:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
// Turn spell check on
textView.autocorrectionType = UITextAutocorrectionTypeYes;
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
// Turn spell check off and clean up red squiggles.
textView.autocorrectionType = UITextAutocorrectionTypeNo;
NSString *currentText = textView.text;
textView.text = @"";
textView.text = currentText;
return YES;
}
答案 1 :(得分:6)
您可以先尝试隐藏键盘然后重新显示。还要更新uitextview。如果[UITextView setNeedsDisplay]不适合你,请尝试[UITextView insertText:]然后[UITextView deleteBackward]
[textView resignFirstResponde];
textView.autocorrectionType = UITextAutocorrectionTypeNo;
[textView becomeFirstResponder];
[textView setNeedsDisplay];
或
[textView insertText:@" "];
[textView deleteBackward];
答案 2 :(得分:3)
除了将自动更正类型更改为UITextAutoCorrectionNo之外,还必须强制UITextView重新评估其更正状态。 setNeedsRedraw不足,但将文本设置为自身,例如
textView.autocorrectionType = UITextAutocorrectionTypeNo;
textView.text = textView.text;
使红色虚线消失。注意:此解决方法依赖于未记录的行为,并且不保证可以在将来的iOS版本上使用。
答案 3 :(得分:2)
更改-setNeedsDisplay
后,请尝试在文本视图中调用autocorrectionType
。这将强制文本视图重绘,并希望清除红色下划线。
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
[myTextView setNeedsDisplay];