如果我从textField返回NO,应该触发“编辑更改”:shouldChangeCharactersInRange:replacementString?

时间:2013-02-13 12:45:13

标签: objective-c delegates uitextfield uitextfielddelegate

我正在实现一个UITextFieldDelegate的方法textField:shouldChangeCharactersInRange:replacementString并返回“NO”,因为我正在格式化输入的文本(作为货币)并将其保存回UITextField的文本属性。

但是我也在与IBAction相关的文本字段上进行了“编辑已更改”事件。如果我返回NO,则不会调用此操作。当我返回YES时会调用它,但最终会将文本字段中的所有字母加倍!

  1. 这是正确的行为吗?我找不到权威人士说这是事实。如果您可以回答Apple的文档链接,那将会有所帮助。

  2. 有没有办法在textField:shouldChangeCharactersInRange ...方法的末尾“手动”触发此事件? (我没有权限访问我的IBAction是从我的委托的实现中定义的。)

1 个答案:

答案 0 :(得分:4)

在我的textField实现结束时:shouldChangeCharactersInRange:replacementString(在UITextField的类别中声明)我需要发送:

[self sendActionsForControlEvents:UIControlEventEditingChanged];

这种“手动”向响应者链发射事件,否则将通过返回NO来抑制该事件。