IOS Swift - 手动触发文本字段事件

时间:2015-07-14 15:53:33

标签: ios swift uitextfield

如何在给定UITextField对象的情况下手动触发事件?

textFieldShouldBeginEditing(_:)
textFieldDidBeginEditing(_:)
textFieldShouldEndEditing(_:)
textFieldDidEndEditing(_:)

在当前场景中。进入上述回调有一些逻辑。有时我手动更新文本域

textfield.text = <new text>

我想要

textFieldDidBeginEditing

触发,像(希望)

textfield.trigger("textFieldDidBeginEditing")

虽然我的方法可能不完全正确,但上述解决方案最有可能对我有用。虽然,如果我能用不同的方式来表达我的问题,那就是:

  • 当通过用户界面或 textfield.text = <new value>
  • 更改UITextFields值(文本)时,如何运行某些逻辑(代码)

2 个答案:

答案 0 :(得分:1)

详细说明我的答案和理由:

我不认为有可能触发这类事件&#34;手工&#34; - 不应该你能够。它只会导致比解决的问题更多的问题。例如。例如,如果在文本字段中显示它应该发生什么呢?

因此,我建议您将逻辑提取到第二个方法中,并从当前代码和处理程序中调用该方法

而不是

func textFieldDidEndEditing(textField: UITextField) {
    // your logic is here
    let k = 1 + 2
}

func yourCurrentCode() {
    // somehow trigger the event "textFieldDidEndEditing"
}

做类似

的事情
func textFieldDidEndEditing() {
    myLogic()
}

func yourCurrentCode() {
    myLogic()
}

func myLogic() {
    // your logic should be here
    let k = 1 + 2
}

如果您希望每当UITextField的值发生变化时收到通知,您应该使用通知

UITextFieldTextDidChangeNotification

答案 1 :(得分:0)

忽略您要解决的情况;无论如何,这都是正确的方法;您可以像这样触发UITextField事件:

        textField.sendActions(for: UIControl.Event.editingChanged)