打开Apple的日历应用。命名新约会时,它会自动将第一个字母大写。它不会使用'更正'样式换出来执行此操作。
对于我的生活,我无法重现这种行为。在IB中,我将UITextField的大小写设置为Word,但它似乎根本没有效果。如果我打开校正,它会用大写版本换掉这个单词,但这不太正确。
我是否需要在代码中处理此问题,方法是检查每次按键操作?这可能是微不足道的,除了我担心我将遗漏的所有极端情况,例如当用户手动使用'shift'来否定大小写,或者删除和重新键时,在这种情况下它不应该大写
或许有一种方法可以简单地加载按下shift的文本字段?这是实施它的常用方法吗?
答案 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,则忽略此选项。
答案 5 :(得分:2)
以下是所有字符的Swift 2.0更新:
SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters
答案 6 :(得分:0)
我在大写属性方面遇到了同样的问题,我只是将键盘类型改为Default,一切都按预期开始工作。在我的情况下,我之前已将keyboardType设置为不支持自动大写的NamePhonePad。