Вы не упоминаете, какой SDK вы используете, но для версии 3.0 и выше я вижу желаемое поведение.
Тем не менее, вы всегда можете изменить текст в верхний регистр, когда они завершат редактирование, используя textFieldDidEndEditing из делегата:
- (void)textFieldDidEndEditing:(UITextField *)textField {
NSString *textToUpper = [textField.text uppercaseString];
[theTextField setText:textToUpper];
}
Или, настроив уведомление в текстовом поле при его изменении, вы можете изменить текст по мере его ввода:
// setup the UITextField
{
theTextField.delegate = self;
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
[theTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}
Вы должны сделать это таким образом, поскольку, в отличие от UISearchBar , UITextField не реализует textDidChange . Может быть, как-то так?
- (void)textFieldDidChange:(UITextField *)textField {
NSRange range = [textField.text rangeOfString : @"-"];
if (range.location != NSNotFound) {
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
}
}