【发布时间】:2012-10-25 09:45:45
【问题描述】:
如何将动作绑定到 iOS 中键盘的 Go 按钮?
【问题讨论】:
标签: ios objective-c uitextfield uikeyboard uitextfielddelegate
如何将动作绑定到 iOS 中键盘的 Go 按钮?
【问题讨论】:
标签: ios objective-c uitextfield uikeyboard uitextfielddelegate
假设您使用的是 UITextField,您可以使用 <UITextFieldDelegate> 方法 textFieldShouldReturn。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; // Dismiss the keyboard.
// Execute any additional code
return YES;
}
不要忘记将您放入此代码的类指定为文本字段的委托。
self.someTextField.delegate = self;
或者,如果您更喜欢使用 UIControlEvents,您可以执行以下操作
[someTextField addTarget:self action:@selector(textFieldDidReturn:) forControlEvents:UIControlEventEditingDidEndOnExit];
- (void)textFieldDidReturn:(UITextField *)textField
{
// Execute additional code
}
请参阅@Wojtek Rutkowski's answer,了解如何在 Interface Builder 中执行此操作。
UITextFieldDelegate
class SomeViewController: UIViewController, UITextFieldDelegate {
let someTextField = UITextField()
override func viewDidLoad() {
super.viewDidLoad()
someTextField.delegate = self
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder() // Dismiss the keyboard
// Execute additional code
return true
}
}
UIControlEvents
class SomeViewController: UIViewController {
let someTextField = UITextField()
override func viewDidLoad() {
super.viewDidLoad()
// Action argument can be Selector("textFieldDidReturn:") or "textFieldDidReturn:"
someTextField.addTarget(self, action: "textFieldDidReturn:", forControlEvents: .EditingDidEndOnExit)
}
func textFieldDidReturn(textField: UITextField!) {
textField.resignFirstResponder()
// Execute additional code
}
}
【讨论】:
您可以在Connections Inspector 中连接UITextFiled 事件Did End On Exit。在点击Go / Return / 在Attributes Inspector 中选择Return Key 后触发。
【讨论】:
UITextField 才能正常工作。所以最好继续使用代码中包含的代表,而不是使用 UIInterfaceBuilder 来完成这个小功能!