我想知道如何通过按下软键盘上的返回键或点击UIButton来允许操作。
UI按钮已设置为执行IBAction。
如何让用户按键盘上的返回键执行相同的操作?
答案 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或更高版本,则可以将文本字段的“主要操作触发”事件连接到操作,如下所示:
让您的视图控制器采用UITextFieldDelegate
协议。
将文本字段的委托设置为视图控制器。
实施textFieldShouldReturn:
来召集您的行动。
答案 2 :(得分:3)
如果您的部署目标是iOS 9.0或更高版本,则可以将文本字段的“主要操作触发”事件连接到操作,如下所示:
我无法获得"触发的主要操作"按照建议工作。我用"编辑完了"这适用于现在Screenshot of Editing Did End
答案 3 :(得分:1)
这是一个完整的示例,其中包括:
按钮操作,反复按下按钮可同时书写和清除标签和文本,同时交替执行两个操作
按键盘上的返回键可触发操作并退出第一响应者
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
}