如何为现有UITextView打开和关闭autocorrectionType

adr*_*aan 18 cocoa-touch objective-c autocorrect uitextview

我的iPhone应用程序中有一个UITextView,我希望能够切换autocorrectionType.

当用户正在编辑文本视图时,我希望将autocorrectionType设置为UIAutocorrectionTypeYes.当没有编辑文本视图时,我希望将autocorrectionType设置为UIAutocorrectionTypeNo(因为我不希望自动更正生成的任何红点划线都可见)

只需切换autocorrectionType,如下所示:

myTextView.autocorrectionType = UITextAutocorrectionTypeYes;
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
Run Code Online (Sandbox Code Playgroud)

似乎没有用.我何时可以切换autocorrectionType或在哪些情况下更改的autocorrectionType生效?

编辑:

澄清一下:初始化UITextView时设置autocorrectionType没有问题.当我想要更改现有UITextView的autocorrectionType时,会出现问题.在我的情况下,我想在编辑UITextView时为用户提供自动更正的优势,但是当UITextView没有被编辑时,不希望用红色虚线下划线指出任何拼写错误 - 部分是因为我也在导出UIView包含UITextView作为图像.问题是只更改我的UITextView的autocorrectionType属性的值不起作用.

小智 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;
}
Run Code Online (Sandbox Code Playgroud)


bol*_*hav 6

您可以先尝试隐藏键盘,然后再次显示.还要更新uitextview.如果[UITextView setNeedsDisplay]不适合你,请尝试[UITextView insertText:]然后[UITextView deleteBackward]

[textView resignFirstResponde];
textView.autocorrectionType = UITextAutocorrectionTypeNo;
[textView becomeFirstResponder];
[textView setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)

要么

[textView insertText:@" "];
[textView deleteBackward];
Run Code Online (Sandbox Code Playgroud)