Ios6 UITextField autocapitalizationType UITextAutoCapitalizationType设备上不工作的所有字符

Ios6 UITextField autocapitalizationType UITextAutoCapitalizationType设备上不工作的所有字符,ios6,uitextfield,xcode4.6.3,Ios6,Uitextfield,Xcode4.6.3,您可以设置UITextField的autocapitalizationType属性,以便所有输入均为大写。我发现这在模拟器上可以很好地工作(实际上是敲击模拟器的键盘,而不是Mac的键盘),但在设备上却不行?一切都保持小写 在UICatalog演示中,我添加了textFieldNormal方法: textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 还添加了一个委托,以显示UITex

您可以设置UITextField的autocapitalizationType属性,以便所有输入均为大写。我发现这在模拟器上可以很好地工作(实际上是敲击模拟器的键盘,而不是Mac的键盘),但在设备上却不行?一切都保持小写

在UICatalog演示中,我添加了textFieldNormal方法:

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
还添加了一个委托,以显示UITextField的实际autocapitalizationType:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog( @"textField.autocapitalizationType=%d", textField.autocapitalizationType );
}

它将正确显示3(=UITextAutocapitalizationTypeAllCharacters),但您点击的任何内容都将保持小写。我遗漏了什么?

显然这是一个设备常规设置问题:设置->常规->键盘->自动大写必须启用才能将textField.autocapitalizationType设置为全大写,否则设置属性显然会被忽略。如果我打开它,一切都会正常工作。

您可以在textfield代理中尝试以下操作:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (range.length == 0) { // not deleting , but adding a char        
        textField.text = [textField.text stringByAppendingString:[string uppercaseString]];
        return NO;
    }

    return YES;
}
仅当尝试在文本末尾插入符号时,此操作才有效。 如果你想在中间玩文字,你可以玩

范围、位置

而且你还需要玩光标定位,因为它将在每次结束时

我希望这对某人有帮助