【发布时间】:2012-07-18 04:45:27
【问题描述】:
我的视图中有一个按钮和文本文本字段。当我单击文本字段时,会出现一个键盘,我可以在文本字段上书写,我还可以通过单击添加以下按钮来关闭键盘:
[self.inputText resignFirstResponder];
现在我想启用键盘的返回键。当我按下键盘时,键盘会消失,并且会发生一些事情。我该怎么做?
【问题讨论】:
标签: ios objective-c iphone swift uitextfield
我的视图中有一个按钮和文本文本字段。当我单击文本字段时,会出现一个键盘,我可以在文本字段上书写,我还可以通过单击添加以下按钮来关闭键盘:
[self.inputText resignFirstResponder];
现在我想启用键盘的返回键。当我按下键盘时,键盘会消失,并且会发生一些事情。我该怎么做?
【问题讨论】:
标签: ios objective-c iphone swift uitextfield
当点击键盘完成按钮时,对从 UITextField 发送的“primaryActionTriggered”UIEvent 使用 Target-Action UIKit 机制。
textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
【讨论】:
确保 "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
}
【讨论】:
虽然其他答案正常,但我更喜欢执行以下操作:
在viewDidLoad()中,添加
self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)
并定义函数
@IBAction func onReturn() {
self.textField.resignFirstResponder()
// do whatever you want...
}
【讨论】:
在 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
}
}
【讨论】: