UITextField的大写

Ben*_*ard 22 uitextfield ios

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

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

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

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

Ben*_*tto 61

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

[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];
Run Code Online (Sandbox Code Playgroud)

还有一个例外(根据文档),这将被忽略:

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

这适用于你吗?

  • UIKeyboardTypeNamePhonePad是它...但是大多数名字都没有大写?为什么这个例外? (16认同)
  • 这也是我的问题 - 为什么在地球上不能在NamePhonePad上启用大写? (2认同)

Nat*_*lls 22

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


Jea*_*Luc 15

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

启动iOS设置.转到General,然后是Keyboard,用户可以选择"Auto-Capitalization".它关闭了吗?

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


Sal*_*lim 5

大写禁用

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
Run Code Online (Sandbox Code Playgroud)

大写所有字符

textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
Run Code Online (Sandbox Code Playgroud)

将句子的第一个字符大写

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
Run Code Online (Sandbox Code Playgroud)

将句子中所有单词的第一个字符大写

textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
Run Code Online (Sandbox Code Playgroud)