IOS Swift - 手动触发文本框事件

IOS Swift - Manually trigger textfield events

如何根据 UITextField 对象手动触发事件?

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

在当前场景中。上面的回调中有一些逻辑。有时我手动更新文本字段

textfield.text = <new text>

我想要

textFieldDidBeginEditing

被触发,喜欢(希望如此)

textfield.trigger("textFieldDidBeginEditing")

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

详细说明我的回答和推理:

我认为不可能触发此类事件 "by hand" - 也不应该 你能够。它只会导致比它解决的问题更多的问题。例如。例如,插入符号应该如何处理,它应该显示在文本字段中吗?

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

而不是

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

撇开你试图解决的情况;不管这是否是正确的方法;您可以像这样触发文本字段事件:

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