UITextField的大写

时间:2012-01-15 05:15:41

标签: ios uitextfield

打开Apple的日历应用。命名新约会时,它会自动将第一个字母大写。它不会使用'更正'样式换出来执行此操作。

对于我的生活,我无法重现这种行为。在IB中,我将UITextField的大小写设置为Word,但它似乎根本没有效果。如果我打开校正,它会用大写版本换掉这个单词,但这不太正确。

我是否需要在代码中处理此问题,方法是检查每次按键操作?这可能是微不足道的,除了我担心我将遗漏的所有极端情况,例如当用户手动使用'shift'来否定大小写,或者删除和重新键时,在这种情况下它不应该大写

或许有一种方法可以简单地加载按下shift的文本字段?这是实施它的常用方法吗?

7 个答案:

答案 0 :(得分:61)

将大写设置为Word应该这样做,所以其他的东西出错了。你确定在你正在测试的实际UITextField上切换了吗?你确定你不是可能在代码中以某种方式覆盖它吗?您可以使用以下命令以编程方式设置它:

[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];

还有一个例外(每the docs),这将被忽略:

  

某些键盘类型不支持自动大写。特别,   如果keyboardType属性中的值为,则忽略此选项   设置为UIKeyboardTypeNumberPad,UIKeyboardTypePhonePad或   UIKeyboardTypeNamePhonePad。

这适用于你吗?

答案 1 :(得分:22)

您使用的是模拟器还是实际设备?如果您使用的是模拟器,则外壳将遵循计算机上物理键盘的移位和大写锁定状态。

答案 2 :(得分:15)

我刚刚在我的应用中检查了这个,默认情况下它已经完成了大写。行为不是由您的应用程序代码决定的,而是由全局iphone设置决定的。

启动 iOS设置。转到常规,然后键盘,用户可以选择“自动大写”。它关闭了吗?

在我的情况下,它已打开,所以我的应用程序和日历都有此功能,当我关闭它时,两个应用程序都缺少此功能,因为用户决定他不想要此功能。

答案 3 :(得分:4)

大写禁用

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

将所有字符大写

textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

将句子的第一个字符大写

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;

对于所有单词中第一个字符的大写

textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

答案 4 :(得分:4)

某些键盘会忽略大小写类型

  

某些键盘类型不支持自动大写。具体而言,如果keyboardType属性中的值设置为UIKeyboardTypeNumberPad,UIKeyboardTypePhonePad或UIKeyboardTypeNamePhonePad,则忽略此选项。

More details on the developer reference

答案 5 :(得分:2)

以下是所有字符的Swift 2.0更新:

SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters

答案 6 :(得分:0)

我在大写属性方面遇到了同样的问题,我只是将键盘类型改为Default,一切都按预期开始工作。在我的情况下,我之前已将keyboardType设置为不支持自动大写的NamePhonePad。