我想知道如何通过按下软件键盘上的返回键或点击UIButton来执行操作。
UI按钮已设置为执行IBAction。
我还如何允许用户按键盘上的Return键执行相同的操作?
Answers:
确保您的类扩展了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
}
如果您的部署目标是iOS 9.0或更高版本,则可以将文本字段的“已触发主要操作”事件连接到操作,如下所示:
我无法按照建议的方法启动“主要操作”。我使用了“ Edited Did End”,现在可以使用了。
这是一个完整的示例,包括:
重复按下按钮时,可进行写操作以及清除标签和文本的按钮操作,它将两个操作交替进行
按下键盘时返回键盘可触发操作,也辞职第一响应者
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 = ""
}
}
}