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

时间:2014-10-09 21:24:05

标签: xcode swift ios8

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

UI按钮已设置为执行IBAction。

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

5 个答案:

答案 0 :(得分:85)

确保您的类扩展了UITextFieldDelegate协议

SomeViewControllerClass : UIViewController, UITextFieldDelegate

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

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
}

答案 1 :(得分:75)

更新

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

connecting primary action triggered event

ORIGINAL

让您的视图控制器采用UITextFieldDelegate协议。

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

实施textFieldShouldReturn:来召集您的行动。

答案 2 :(得分:3)

  

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

我无法获得"触发的主要操作"按照建议工作。我用"编辑完了"这适用于现在Screenshot of Editing Did End

enter image description here

答案 3 :(得分:1)

这是一个完整的示例,其中包括:

  1. 按钮操作,反复按下按钮可同时书写和清除标签和文本,同时交替执行两个操作

  2. 按键盘上的返回键可触发操作并退出第一响应者

class ViewController: UIViewController, UITextFieldDelegate {
    
    @IBOutlet weak var textField1: UITextField!
    @IBOutlet weak var label1: UILabel!
    
    var buttonHasBeenPressed = false
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        textField1.delegate = self
    }
    
    
    @IBAction func buttonGo(_ sender: Any) {
        performAction()
    }
    
    
    
    
    
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        performAction()
        return true
    }
    
   
    func performAction() {
        buttonHasBeenPressed = !buttonHasBeenPressed
        
        if buttonHasBeenPressed == true {
            label1.text = textField1.text
        } else {
            textField1.text = ""
            label1.text = ""
        }
        
    }
    
}

答案 4 :(得分:0)

Swift 4.2:

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

     MyTextField.addTarget(self, action: #selector(MyTextFielAction)
                               , for: UIControl.Event.primaryActionTriggered)

然后执行以下操作:

    func MyTextFielAction(textField: UITextField) {
       //YOUR CODE can perform same action as your UIButton
    }