我的视图中有一个按钮和文本文本字段。当我点击文本字段时,键盘出现,我可以在文本字段上书写,我也可以通过添加以下命令来点击按钮来解除键盘:
[self.inputText resignFirstResponder];
现在我要启用键盘的返回键。当我按下键盘时,键盘会消失,会发生一些事情。我怎么能这样做?
答案 0 :(得分:166)
确保“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
}
答案 1 :(得分:7)
使用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
}
}
答案 2 :(得分:0)
虽然其他答案正常运行,但我更喜欢执行以下操作:
在viewDidLoad()中添加
self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)
并定义功能
@IBAction func onReturn() {
self.textField.resignFirstResponder()
// do whatever you want...
}
答案 3 :(得分:-1)
使用Target-Action UIKit机制处理从UITextField发送的“ primaryActionTriggered” UIEvent,该事件是在敲击完成按钮时从UITextField发送的。
textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)