如何获得返回键以执行与Swift中的按钮按下相同的操作?

Fid*_*l13 61 xcode swift ios8

我想知道如何通过按下软键盘上的返回键或点击UIButton来允许操作.

UI按钮已设置为执行IBAction.

如何让用户按键盘上的返回键执行相同的操作?

Ste*_*erg 92

确保您的类扩展了UITextFieldDelegate协议

SomeViewControllerClass : UIViewController, UITextFieldDelegate
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式执行操作:

override func viewDidLoad() {
    super.viewDidLoad()

    self.textField.delegate = self
}

func textFieldShouldReturn(textField: UITextField) -> Bool {

    //textField code

    textField.resignFirstResponder()  //if desired
    performAction()
    return true
}

func performAction() {   
    //action events
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是正确的,但您的视图控制器必须采用UITextViewDelegate协议 (5认同)

rob*_*off 78

UPDATE

如果您的部署目标是iOS 9.0或更高版本,则可以将文本字段的"主要操作触发"事件连接到操作,如下所示:

连接主要动作触发事件

原版的

使您的视图控制器采用UITextFieldDelegate协议.

将文本字段的委托设置为视图控制器.

实现textFieldShouldReturn:调用您的操作.


小智 11

斯威夫特 4.2:

以编程方式创建的文本字段的其他方法不需要委托:

     MyTextField.addTarget(self, action: #selector(MyTextFielAction)
                               , for: UIControl.Event.primaryActionTriggered)
Run Code Online (Sandbox Code Playgroud)

然后执行如下操作:

    func MyTextFielAction(textField: UITextField) {
       //YOUR CODE can perform same action as your UIButton
    }
Run Code Online (Sandbox Code Playgroud)


Jac*_*vis 5

如果您的部署目标是iOS 9.0或更高版本,则可以将文本字段的“已触发主要操作”事件连接到操作,如下所示:

我无法按照建议的方法启动“主要操作”。我使用了“ Edited Did End”,现在可以使用了。

在此处输入图片说明