在应用程序中关闭全局自动更正

我想在iPad应用程序中禁用文本输入自动更正,无论设备上的自动更正的全局设置是什么。 有没有一种很好的方法可以通过API执行此操作,或者我只需要浏览整个应用程序,查找所有文本输入字段,并单独关闭每个字段的选项?

对不起,你必须通过所有文本字段并禁用它

您可以使用一些方法调整来覆盖默认文本字段autocorrection类型。 在您的应用委托或其他合理的地方:

#import  // Prevent this code from being called multiple times static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ struct objc_method_description autocorrectionTypeMethodDescription = protocol_getMethodDescription(@protocol(UITextInputTraits), @selector(autocorrectionType), NO, YES); // (Re)implement `-[UITextField autocorrectionType]` to return `UITextAutocorrectionTypeNO`. IMP noAutocorrectionTypeIMP = imp_implementationWithBlock(^(UITextField *_self){ return UITextAutocorrectionTypeNo; }); class_replaceMethod([UITextField class], @selector(autocorrectionType), noAutocorrectionTypeIMP, autocorrectionTypeMethodDescription.types); }); 

您可以inheritanceUITextField的子类并为其设置所需的属性。 您可以使用此子类版本而不是UITextField。

如果您还没有开始实施您的应用程序,这可能是值得的!

正如@cocoakomali建议的那样,您可以创建一个UITextField 类别 ,以便在默认情况下为应用中的所有UITextField禁用@cocoakomali

 @implementation UITextField (DisableAutoCorrect) - (instancetype)init { self = [super init]; if (self) { [self setAutocorrectionType:UITextAutocorrectionTypeNo]; } return self; } @end