Question

For some reason, none of my UITextFields will autocapitalize. I have set the property in InterfaceBuilder as well as programatically as shown below.

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"search_cell"];
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(12, 10, 320, 32)];
tf.autocapitalizationType = UITextAutocapitalizationTypeWords;
tf.returnKeyType = UIReturnKeySearch;
tf.font = [UIFont boldSystemFontOfSize:20.0];
tf.delegate = self;
[cell addSubview:tf];
[tf becomeFirstResponder];

Is there anyway I could have set some flag that disables autocapitalization throughout the whole app without realizing it?

Thanks

Was it helpful?

Solution

Did you check your iPhone's Settings -> General -> Keyboard -> Auto-capitalization?

OTHER TIPS

I found that if you turn off autocorrection then auto-capitalization doesn't work either. Seems to me that they should operate independently. In a name field one would want to capitalize every word but not replace a name automatically with whatever the dictionary predicts.

I couldn't get it to work no matter the settings. So I just put this in the textfield's delegate:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    // Handle the backspace.
    if ([string isEqualToString:@""]) return YES;

    // Otherwise convert to uppercase and change the textfield manually.
    textField.text = [[textField.text stringByAppendingString:string] uppercaseString];
    return NO;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top