Iphone UITextField值已更改事件?
如何使文本字段的内容发生变化时调用函数?Objective-CIphone UITextField值已更改事件?,iphone,uitextfield,Iphone,Uitextfield,如何使文本字段的内容发生变化时调用函数?Objective-C [myTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; Swift 4 myTextField.addTarget(self, action: #selector(textFieldDidChange(sender
[myTextField addTarget:self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged];
Swift 4
myTextField.addTarget(self, action: #selector(textFieldDidChange(sender:)), for: .editingChanged)
@objc func textFieldDidChange(sender: UITextField) {...}
textField.addTarget(self, action: #selector(self.textFieldDidChange(sender:)), for: .editingChanged)
@objc func textFieldDidChange(sender: UITextField){
print("textFieldDidChange is called")
}
实际上,
UITextField
没有值更改事件,使用UIControlEventEditingChanged
我解决了更改shouldChangeChractersInRange行为的问题。如果您返回否,iOS将不会在内部应用更改,相反,您有机会手动更改并在更改后执行任何操作
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
//Replace the string manually in the textbox
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
//perform any logic here now that you are sure the textbox text has changed
[self didChangeTextInTextField:textField];
return NO; //this make iOS not to perform any action
}
对斯威夫特来说,这很方便-
textField.addTarget(self, action: #selector(onTextChange), forControlEvents: UIControlEvents.EditingChanged)
这是我的解决方案
Swift 4
myTextField.addTarget(self, action: #selector(textFieldDidChange(sender:)), for: .editingChanged)
@objc func textFieldDidChange(sender: UITextField) {...}
textField.addTarget(self, action: #selector(self.textFieldDidChange(sender:)), for: .editingChanged)
@objc func textFieldDidChange(sender: UITextField){
print("textFieldDidChange is called")
}
奇怪的是,基于UIControlEventDidEnd和UIControlEventDidBegin,人们会假设它是UIControlEventValueChanged。。。UIControlEventValueChanged到底做了什么?@kovpas如果我们以编程方式更改值,那么它就不会得到调用,知道该做什么吗?。例如,myTextField.text=“Krishna”请注意,设置文本属性会将光标移动到文本的末尾,这可能会影响编辑您可以自己处理它