UITextField не будет автоматически использовать заглавные буквы в течение всего проекта - PullRequest
12 голосов
/ 14 июля 2009

По какой-то причине ни один из моих UITextFields не будет автокапитализироваться. Я установил свойство в InterfaceBuilder, а также программно, как показано ниже.

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

Можно ли в любом случае установить какой-либо флаг, который отключает автокапитализацию во всем приложении, не осознавая этого?

Спасибо

Ответы [ 3 ]

26 голосов
/ 14 июля 2009

Проверяли ли вы настройки iPhone -> Общие -> Клавиатура -> Автокапитализация?

3 голосов
/ 02 мая 2011

Я обнаружил, что если вы отключите автокоррекцию, то автокапитализация тоже не будет работать. Сдается мне, что они должны действовать самостоятельно. В поле имени можно использовать заглавные буквы для каждого слова, но не заменять имя автоматически тем, что предсказывает словарь.

0 голосов
/ 28 июля 2013

Я не мог заставить его работать независимо от настроек. Поэтому я просто поместил это в делегат текстового поля:

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