Disable auto correction of UITextField
IosObjective CUitextfieldIos 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'
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)