Ios 打开和关闭自动更正类型(UITextView)

Ios 打开和关闭自动更正类型(UITextView),ios,objective-c,uitextview,autocorrect,Ios,Objective C,Uitextview,Autocorrect,我有一个UITextView,我希望能够为其切换自动更正类型 像这样简单地切换自动更正类型是行不通的 myTextView.autocorrectionType = UITextAutocorrectionTypeYes; myTextView.autocorrectionType = UITextAutocorrectionTypeNo; 我用过 myTextView.text = myTextView.text; 及 及 这些都不管用…它只适用于这样的东西 NSString* textD

我有一个UITextView,我希望能够为其切换自动更正类型

像这样简单地切换自动更正类型是行不通的

myTextView.autocorrectionType = UITextAutocorrectionTypeYes;
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
我用过

myTextView.text = myTextView.text;


这些都不管用…

它只适用于这样的东西

NSString* textDirty=textContainerView.text;
    textContainerView.text=@"";
    textContainerView.text=textDirty;

但我想要一个更干净的解决方案。。。另外,它只对用户输入的新文本应用拼写检查,而不是对整个uitextview文本应用拼写检查。

当您更改这些属性(包括键盘类型)时,通常需要“启动”该过程

// Original
myTextView.autocorrectionType = UITextAutocorrectionTypeYes;
…//时光流逝

// Now want to change
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
BOOL bogusKeyboardMotion = YES; // ivar
[myTextView resignFirstResponder];
[myTextView becomeFirstResponder];
bogusKeyboardMotion= NO;

然后忽略委托方法中的任何委托消息。也许将代理设置为零,然后再将其设置回原来的值也会起作用。

你能解释一下你说“它不起作用”是什么意思吗。当UITextAutocorrectionTypeNo时,文本保持带下划线的红点…我想删除它。。我也在做这个textContainerView.autocorrectionType=UITextAutocorrectionTypeNo;textContainerView.spellCheckingType=UITextSpellCheckingTypeNo;您编写的第一大段代码是正确的。这听起来更像是你把它放在哪里的问题。当我改变这些习惯时,键盘不是第一反应器,所以这不是因为这个。这些选项位于新的viewcontroller中,因此键盘始终处于关闭状态。。。看看我的答案。。
// Original
myTextView.autocorrectionType = UITextAutocorrectionTypeYes;
// Now want to change
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
BOOL bogusKeyboardMotion = YES; // ivar
[myTextView resignFirstResponder];
[myTextView becomeFirstResponder];
bogusKeyboardMotion= NO;