iOS TextField 自动大写不起作用
iOS TextField AutoCapitalization not working
我创建了一个只有一个文本字段的新项目,并将所有字符都设置为大写。我从界面构建器和代码中尝试了这个:
[self.textField setAutocapitalizationType:UITextAutocapitalizationTypeAllCharacters];
无论我怎么尝试,结果都是这样:
我知道可以从 设置 - 常规 - 键盘 - 自动大写 更改键盘自动大写设置,但我认为拥有AutocapitalizationType 属性 在文本字段上,如果它无论如何都被 iOS 覆盖。
它也不适用于 UITextAutocapitalizationTypeWords。
这发生在 iOS 10.0.2 的 iPhone 6S 上(其他答案说它发生在模拟器中,但事实并非如此)。
知道问题出在哪里吗?
I am aware that the keyboard Auto-Capitalization settings can be
changed from Settings - General - Keyboard - Auto-Capitalization, but
I assume there would be no purpose in having the
AutocapitalizationType property on a text field if it is overwritten
by the iOS anyway.
没错,设置中的这个开关应该是打开的。但它不会覆盖 应用程序中文本字段的值。如果打开此开关,将允许所有想要大写用户输入的文本字段这样做,并且具有 UITextAutocapitalizationTypeNone
值的文本字段不会大写任何内容。
不管自动大写指令如何,我在 textField 中强制使用全大写表示的一种方法是在 UITextFieldDelegate 函数中插入这个小改动:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let str = string.capitalized
let result = (textField.text as NSString?)?.replacingCharacters(in: range, with: str) ?? str
textField.text = result
return false
}
如预期的那样,这也会将插入的字符大写。
我创建了一个只有一个文本字段的新项目,并将所有字符都设置为大写。我从界面构建器和代码中尝试了这个:
[self.textField setAutocapitalizationType:UITextAutocapitalizationTypeAllCharacters];
无论我怎么尝试,结果都是这样:
我知道可以从 设置 - 常规 - 键盘 - 自动大写 更改键盘自动大写设置,但我认为拥有AutocapitalizationType 属性 在文本字段上,如果它无论如何都被 iOS 覆盖。
它也不适用于 UITextAutocapitalizationTypeWords。
这发生在 iOS 10.0.2 的 iPhone 6S 上(其他答案说它发生在模拟器中,但事实并非如此)。
知道问题出在哪里吗?
I am aware that the keyboard Auto-Capitalization settings can be changed from Settings - General - Keyboard - Auto-Capitalization, but I assume there would be no purpose in having the AutocapitalizationType property on a text field if it is overwritten by the iOS anyway.
没错,设置中的这个开关应该是打开的。但它不会覆盖 应用程序中文本字段的值。如果打开此开关,将允许所有想要大写用户输入的文本字段这样做,并且具有 UITextAutocapitalizationTypeNone
值的文本字段不会大写任何内容。
不管自动大写指令如何,我在 textField 中强制使用全大写表示的一种方法是在 UITextFieldDelegate 函数中插入这个小改动:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let str = string.capitalized
let result = (textField.text as NSString?)?.replacingCharacters(in: range, with: str) ?? str
textField.text = result
return false
}
如预期的那样,这也会将插入的字符大写。