How to toggle autocorrectionType on and off for an existing UITextView

纵然是瞬间 提交于 2019-11-30 06:26:35

Here's an easy way to do this for the image export scenario :

- (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;
}

You can try to first hide the keyboard first and then displaying it again. Also update the uitextview. If [UITextView setNeedsDisplay] doesn't work for you, try [UITextView insertText:] and then [UITextView deleteBackward]

[textView resignFirstResponde];
textView.autocorrectionType = UITextAutocorrectionTypeNo;
[textView becomeFirstResponder];
[textView setNeedsDisplay];

or

[textView insertText:@" "];
[textView deleteBackward];

In addition to changing the autocorrection type to UITextAutoCorrectionNo, the UITextView must be forced to reevaluate its correction state. setNeedsRedraw is insufficient but setting the text to itself, e.g.

textView.autocorrectionType = UITextAutocorrectionTypeNo;
textView.text = textView.text;

makes the red dashed lines go away. NOTE: this workaround relies on undocumented behavior and is not guaranteed to work on future iOS releases.

Try calling -setNeedsDisplay on the text view after you've changed the autocorrectionType. This will force the text view to redraw and will hopefully clear the red underlines.

myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
[myTextView setNeedsDisplay];
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!