7

您可以设置 UITextField 的 autocapitalizationType 属性,以便所有输入都是大写的。我发现它在模拟器上运行良好(当实际点击模拟器的键盘,而不是 Mac 的键盘时),但在设备上却不行?一切都保持小写。

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

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

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

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

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

4

2 回答 2

20

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

于 2013-07-27T16:16:05.837 回答
0

你可以尝试这样的文本字段委托:

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

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

范围.位置

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

我希望这可以帮助别人。

于 2014-03-05T11:56:27.153 回答