Reputation: 5674
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
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
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
Reputation: 788
Did you check your iPhone's Settings -> General -> Keyboard -> Auto-capitalization?
Upvotes: 26