Ben Harris
Ben Harris

Reputation: 5674

UITextField will not auto capitalize throughout entire project

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

Upvotes: 12

Views: 5908

Answers (3)

Phil Turner
Phil Turner

Reputation: 246

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;
}

Upvotes: 0

micahcox
micahcox

Reputation: 51

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.

Upvotes: 3

mattwright
mattwright

Reputation: 788

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

Upvotes: 26

Related Questions