在编辑UITextField时切换UITextAutoCorrectionType

时间:2010-05-05 13:51:20

标签: iphone uikit uitextfield autocorrect

我想根据文本字段中的内容打开/关闭自动更正。

例如,如果用户正在键入像“机器工具”这样的短语,我希望自动更正(对于她要输入的其余单词),但是如果我感觉到 - 比如说 - 网址的开头比如“www.mach ..”我想关掉自动修正功能。

我尝试在接收UITextFieldTextDidChangeNotification时执行此操作,方法是根据键入的内容在文本字段上切换autoCorrectionType。虽然此属性在文本字段上的实际值发生更改(使用NSLog验证),但实际的更正行为不会受到影响。因此,如果在编辑会话开始时启用了自动更正,那么即使我将文本字段设置为UITextAutoCorrectionTypeNo,它仍然是如此。因此,“www.foogle ...”会更正为“www.google ..”,这在我的书中并不总是可取的。

那么有没有人找到一种在文本字段中动态启用/禁用自动校正(编辑时)的方法?

感谢。

2 个答案:

答案 0 :(得分:6)

UITextView必须在内部重新加载它不会自动执行的操作,因此我们必须从外部触发它。我找到的方法是辞职并再次成为第一响应者:

[textView resignFirstResponder];
// UITextAutoCorrectionType change
[textView becomeFirstResponder];

这很有效。请记住恢复所选范围。

圣拉斐尔

答案 1 :(得分:2)

设置自动更正类型后,我能够运行[textField reloadInputViews]

请注意,这会重置键盘的状态。如果您正在查看符号(而不是字母),则在致电reloadInputViews后,键盘将重置为字母。