首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检测UITextfield中的文本更改

检测UITextfield中的文本更改
EN

Stack Overflow用户
提问于 2013-03-19 09:21:20
回答 5查看 36.6K关注 0票数 22

我希望能够检测到UITextField中的某些文本是否发生了更改,这样我就可以启用UIButton来保存更改。

EN

回答 5

Stack Overflow用户

发布于 2013-03-19 10:14:40

为此,首先您需要为您的文本字段分配委托引用。并且delgate最好是作为视图的文件所有者的view控制器。它是这样的

代码语言:javascript
复制
myTextField.delegate = myViewControllerReferenceVariable

在您的viewController界面中,告诉您将通过以下方式实现UITextFieldDelegate

代码语言:javascript
复制
@interface MyViewController:UIViewController<UITextFieldDelegate>

,并且在视图控制器实现重写中

代码语言:javascript
复制
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

因此,代码将如下所示

代码语言:javascript
复制
- (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

票数 9
EN

Stack Overflow用户

发布于 2017-02-21 15:38:25

Swift 3.0

流程1

创建UITextfiled的IBOutlet并将目标添加到文本字段。

代码语言:javascript
复制
 m_lblTxt.addTarget(self, action: #selector(self.textFieldDidChange), for: UIControlEvents.editingChanged)

 func textFieldDidChange(textField:UITextField)
 {
     NSLog(textField.text!)
 }

流程2

代码语言:javascript
复制
 m_lblTxt.delegate = self

 //MARK: - TextField Delegates
 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 
 {
      print(textField.text!)
      return true
 }
票数 3
EN

Stack Overflow用户

发布于 2017-10-12 12:25:44

这可以在UITextFieldEditing Changed事件上的接口生成器中完成。将其拖到您的代码中,然后创建一个IBAction

例如:

代码语言:javascript
复制
@IBAction func textFieldChanged(_ sender: UITextField) {
  print(sender.text)
}

此事件与此处的其他答案中所述的事件相同,因为.text属性包含触发时更新的文本输入。这有助于清理代码杂乱,因为不必以编程方式将事件添加到视图中的每个UITextField

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15489916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档