正在编辑UITextField时切换UITextAutoCorrectionType

问题描述:

我想根据文本字段中的内容打开/关闭自动校正。例如,如果用户正在键入像“Machine tools”这样的短语,我希望自动纠正功能处于打开状态(对于其余字词,她将键入),但是如果我感受到 - 说 - 网络的开始地址如“www.mach ..”我想关闭自动校正。正在编辑UITextField时切换UITextAutoCorrectionType

我尝试在接收UITextFieldTextDidChangeNotification时通过基于输入的内容切换文本字段上的autoCorrectionType。虽然该属性在文本字段上的实际值发生了变化(通过NSLog验证),但实际的修正行为不受影响。因此,如果在编辑会话开始时启用自动更正,即使在将文本字段设置为UITextAutoCorrectionTypeNo后,它仍然如此。因此,“www.foogle ...”被纠正为“www.google ..”,这在我的书中可能并不总是令人满意的。

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

谢谢。

+0

我没有经验试图做到这一点。建议虽然:1)你有没有在设备上测试,而不仅仅是在模拟器?可能是差异。那里。 2)虽然很丑,但您可能可以使用一对带有两种不同设置值的文本字段,并且可以在两者之间无缝过渡,隐藏未使用的文本并更新可见文本/第一响应者状态。 – wkw 2010-05-05 15:51:44

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

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

这工作。请记住恢复所选范围。

拉斐尔

+0

这听起来是正确的。谢谢! @wkw,对先前未对您的评论做出回应表示歉意。不知何故没有收到我的查询回复的电子邮件通知。感谢您的投入。 干杯, Dev – 2010-07-14 14:29:14

我可以设置自动校正类型后运行[textField reloadInputViews]

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

+0

为什么这是低票?有用! – 2012-05-25 20:47:53