UITextField autocapitalizationType UITextAutocapitalizationTypeAllCharacters不在设备上工作

时间:2013-07-26 11:06:07

标签: ios6 uitextfield xcode4.6.3

您可以设置UITextField的autocapitalizationType属性,以便所有输入都是大写。我发现在模拟器上工作正常(实际上是在点击模拟器的键盘,而不是Mac的键盘),而不是在设备上?一切都保持小写。

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

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

也添加了一个委托,以显示UITextField的实际autocapitalizationType:

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

它将正确显示3(= UITextAutocapitalizationTypeAllCharacters),但您点击的任何内容仍为小写。我错过了什么?

2 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:0)

您可以尝试使用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;
}

仅当您尝试在文本末尾插入符号时,此方法才有效。 如果你想玩中间的文字你可以玩

  

range.location

并且您还需要使用光标定位,因为它每次都会结束...

我希望这有助于某人。