70

当我尝试在我的 iPhone 应用程序 ( UITextfield) 中编辑文本时,它会自动更正我的输入。

你能告诉我如何禁用它吗?

4

8 回答 8

152
UITextField* f = [[UITextField alloc] init];
f.autocorrectionType = UITextAutocorrectionTypeNo;        
于 2009-05-05T23:11:48.970 回答
32

斯威夫特版本

我来到这里寻找 Swift 版本:

myInput.autocorrectionType = .No

另请阅读@MaikelS的答案

斯威夫特 3.0

textField.autocorrectionType = .no
于 2015-05-14T23:40:37.753 回答
13

您可以使用该UITextInputTraits协议来实现此目的:

myInput.autoCorrectionType = UITextAutocorrectionTypeNo;

有关更多详细信息,请参见此处

于 2009-05-05T23:10:10.423 回答
10

Interface Builder 也有一个下拉字段来禁用它。由于您更有可能在界面构建器中创建文本字段,因此请在此处查找。您可以在“更正”旁边的属性检查器中找到它。

于 2011-08-30T07:30:58.823 回答
7

您还可以通过选择“属性检查器”在情节提要中进行设置,在“更正”下,您可以选择:“默认”、“是”和“否” 在此处输入图像描述 在此处输入图像描述

于 2015-12-29T16:42:16.330 回答
1
+ (void)disableAutoCorrectionsForTextfieldsAndTextViewGlobally {
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    struct objc_method_description autocorrectionTypeMethodDescription =
        protocol_getMethodDescription(@protocol(UITextInputTraits),
                                      @selector(autocorrectionType), NO, YES);
    IMP noAutocorrectionTypeIMP_TEXT_FIELD =
        imp_implementationWithBlock(^(UITextField *_self) {
          return UITextAutocorrectionTypeNo;
        });
    IMP noAutocorrectionTypeIMP_TEXT_VIEW =
        imp_implementationWithBlock(^(UITextView *_self) {
          return UITextAutocorrectionTypeNo;
        });
    class_replaceMethod([UITextField class], @selector(autocorrectionType),
                        noAutocorrectionTypeIMP_TEXT_FIELD,
                        autocorrectionTypeMethodDescription.types);
    class_replaceMethod([UITextView class], @selector(autocorrectionType),
                        noAutocorrectionTypeIMP_TEXT_VIEW,
                        autocorrectionTypeMethodDescription.types);
  });
}
于 2015-09-10T07:14:15.630 回答
1

在 SwiftUI 中,您可以使用.disableAutocorrection(true)修饰符。

Hiere 是一个真实的例子:

VStack {
    TextField("title", text: $LoginModel.email)
        .autocapitalization(.none)
        .disableAutocorrection(true)
        .foregroundColor(.white)
}
于 2021-03-25T08:36:08.047 回答
0

斯威夫特 5:

这就是我在项目中实现电子邮件地址字段的方式

private let emailTextField: UITextField = {
    let tf = CustomTextField(placeholder: "Email address")
    tf.keyboardType = .emailAddress
    tf.autocorrectionType = .no        //disable auto correction
    tf.autocapitalizationType = .none   //disable default capitalization
    return tf
}()

CustomTextField 是我的扩展类(这里不重要)

于 2021-07-23T12:32:44.627 回答