我希望能够检测到UITextField
中的某些文本是否发生了更改,这样我就可以启用UIButton
来保存更改。
发布于 2013-03-19 10:14:40
为此,首先您需要为您的文本字段分配委托引用。并且delgate最好是作为视图的文件所有者的view控制器。它是这样的
myTextField.delegate = myViewControllerReferenceVariable
在您的viewController界面中,告诉您将通过以下方式实现UITextFieldDelegate
@interface MyViewController:UIViewController<UITextFieldDelegate>
,并且在视图控制器实现重写中
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
因此,代码将如下所示
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
text = [textfield.text stringByReplacingCharactersInRange:range withString:string];
if (textfield == refToTextFieldYouWantToCheck) {
if ( ! [textToCheck isEqualToString:text] ) {
[theButtonRef setEnabled:YES];
}
}
return YES; //If you don't your textfield won't get any text in it
}
你也可以订阅通知,这是一种混乱的IMHO你可以找到如何做到这一点here。
发布于 2017-02-21 15:38:25
Swift 3.0
流程1
创建UITextfiled的IBOutlet并将目标添加到文本字段。
m_lblTxt.addTarget(self, action: #selector(self.textFieldDidChange), for: UIControlEvents.editingChanged)
func textFieldDidChange(textField:UITextField)
{
NSLog(textField.text!)
}
流程2
m_lblTxt.delegate = self
//MARK: - TextField Delegates
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{
print(textField.text!)
return true
}
发布于 2017-10-12 12:25:44
这可以在UITextField
的Editing Changed
事件上的接口生成器中完成。将其拖到您的代码中,然后创建一个IBAction
。
例如:
@IBAction func textFieldChanged(_ sender: UITextField) {
print(sender.text)
}
此事件与此处的其他答案中所述的事件相同,因为.text
属性包含触发时更新的文本输入。这有助于清理代码杂乱,因为不必以编程方式将事件添加到视图中的每个UITextField
。
https://stackoverflow.com/questions/15489916
复制相似问题