【问题标题】:how to add an action on UITextField return key?如何在 UITextField 返回键上添加操作?
【发布时间】:2012-07-18 04:45:27
【问题描述】:

我的视图中有一个按钮和文本文本字段。当我单击文本字段时,会出现一个键盘,我可以在文本字段上书写,我还可以通过单击添加以下按钮来关闭键盘:

[self.inputText resignFirstResponder];

现在我想启用键盘的返回键。当我按下键盘时,键盘会消失,并且会发生一些事情。我该怎么做?

【问题讨论】:

标签: ios objective-c iphone swift uitextfield


【解决方案1】:

当点击键盘完成按钮时,对从 UITextField 发送的“primaryActionTriggered”UIEvent 使用 Target-Action UIKit 机制。

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)

【讨论】:

    【解决方案2】:

    确保 "self" 订阅 UITextFieldDelegate 并使用以下命令初始化 inputText:

    self.inputText.delegate = self;
    

    将以下方法添加到“self”中:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        if (textField == self.inputText) {
            [textField resignFirstResponder];
            return NO;
        }
        return YES;
    }
    

    或者在 Swift 中:

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
    

    【讨论】:

      【解决方案3】:

      虽然其他答案正常,但我更喜欢执行以下操作:

      在viewDidLoad()中,添加

      self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

      并定义函数

      @IBAction func onReturn() {
          self.textField.resignFirstResponder()
          // do whatever you want...
      }
      

      【讨论】:

        【解决方案4】:

        在 swift 3.0 中带有扩展样式

        首先,为您的文本字段设置委托。

        override func viewDidLoad() {
            super.viewDidLoad()
            self.inputText.delegate = self
        }
        

        然后在你的视图控制器的扩展中符合UITextFieldDelegate

        extension YourViewController: UITextFieldDelegate {
            func textFieldShouldReturn(_ textField: UITextField) -> Bool {
                if textField == inputText {
                    textField.resignFirstResponder()
                    return false
                }
                return true
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多