2

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

例如,如果用户正在输入像“Machine tools”这样的短语,我希望启用自动更正(对于她要输入的其余单词),但是如果我感觉到 - 比如说 - 一个 Web 地址的开头,比如“www .mach ..” 我想关闭自动校正。

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

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

谢谢。

4

2 回答 2

6

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

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

这行得通。请记住恢复所选范围。

拉斐尔

于 2010-07-13T08:11:55.697 回答
4

[textField reloadInputViews]设置自动更正类型后我就可以运行了。

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

于 2011-05-11T01:48:52.550 回答