如何在给定UITextField对象的情况下手动触发事件?
textFieldShouldBeginEditing(_:)
textFieldDidBeginEditing(_:)
textFieldShouldEndEditing(_:)
textFieldDidEndEditing(_:)
在当前场景中。进入上述回调有一些逻辑。有时我手动更新文本域
textfield.text = <new text>
我想要
textFieldDidBeginEditing
触发,像(希望)
textfield.trigger("textFieldDidBeginEditing")
虽然我的方法可能不完全正确,但上述解决方案最有可能对我有用。虽然,如果我能用不同的方式来表达我的问题,那就是:
textfield.text = <new value>
答案 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)