Disable auto correction of UITextField

IosObjective CUitextfield

Ios Problem Overview


When I try to edit texts in my iPhone application (UITextfield), it auto-corrects my input.

Could you let me know how can I disable this?

Ios Solutions


Solution 1 - Ios

UITextField* f = [[UITextField alloc] init];
f.autocorrectionType = UITextAutocorrectionTypeNo;        

Solution 2 - Ios

Swift version

I landed here looking for a Swift version of this:

myInput.autocorrectionType = .No

Also read the answer by @MaikelS

Swift 3.0

textField.autocorrectionType = .no

Solution 3 - Ios

You can use the UITextInputTraits protocol to achieve this:

myInput.autoCorrectionType = UITextAutocorrectionTypeNo;

See here for more details.

Solution 4 - Ios

The Interface Builder also has a dropdown field to disable this. As you're more likely to create textfields in the interface builder, look for it there. You can find it in the Attributes Inspector next to 'Correction'.

Solution 5 - Ios

you can also set this in the storyboard by choosing the 'attributes inspector' and under 'correction' you can choose: 'Default', 'yes' and 'no' enter image description here enter image description here

Solution 6 - Ios

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

Solution 7 - Ios

In SwiftUI, you can use the .disableAutocorrection(true) modifier.

Hiere is a real life example:

VStack {
    TextField("title", text: $LoginModel.email)
        .autocapitalization(.none)
        .disableAutocorrection(true)
        .foregroundColor(.white)
}

Solution 8 - Ios

Swift 5:

This is how I am achieving for email address field in my project

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 is my extension class (not important here)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionebaccountView Question on Stackoverflow
Solution 1 - IosGeorge ArmholdView Answer on Stackoverflow
Solution 2 - IosDan BeaulieuView Answer on Stackoverflow
Solution 3 - IosJonasView Answer on Stackoverflow
Solution 4 - IosMaikelSView Answer on Stackoverflow
Solution 5 - IosgutteView Answer on Stackoverflow
Solution 6 - IosAlok SinghView Answer on Stackoverflow
Solution 7 - IosiKKView Answer on Stackoverflow
Solution 8 - IosAmit BaderiaView Answer on Stackoverflow