iPhone: Issue disabling Auto-Cap/autocorrect on a UITextField

phil swenson picture phil swenson · Mar 19, 2010 · Viewed 40.7k times · Source

For some reason, even though I disable the auto-cap and auto-correct of my UITextField, it's still capitalizing the first letter of my input.

Here is the code:

UITextField* textField = [[[UITextField alloc] initWithFrame:CGRectMake(90.0, 10.0, 213.0, 25.0)] autorelease];
[textField setClearButtonMode:UITextFieldViewModeWhileEditing];
textField.returnKeyType = UIReturnKeyGo;
textField.autocorrectionType = FALSE;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.delegate = self;
if (inputFieldType == Email) {
    label.text = @"Email:";
    textField.keyboardType = UIKeyboardTypeEmailAddress;
    emailTextField  = textField;
    textField.placeholder = @"Email Address";
} else { // password
    textField.secureTextEntry = TRUE;
    label.text = @"Password:";
    if (inputFieldType == Password){
        textField.placeholder = @"Password";
        passwordTextField  = textField;
    }
    if (inputFieldType == ConfirmPassword){
        textField.placeholder = @"Confirm Password";
        confirmPasswordTextField  = textField;
    }

}

See screenshot: alt text http://grab.by/39WE

Answer

Tom picture Tom · Mar 19, 2010

You're setting autocorrectionType to FALSE as if it were a BOOL, but it actually has type UITextAutocorrectionType. So FALSE is being interpreted as UITextAutocorrectionTypeDefault, which means that autocorrection is probably enabled.

I bet it found the name "Phil" in your address book and is autocorrecting the capitalization to match.