【问题标题】:Action of the "Go" button of the ios keyboardios键盘“Go”按钮的动作
【发布时间】:2012-10-25 09:45:45
【问题描述】:

如何将动作绑定到 iOS 中键盘的 Go 按钮?

【问题讨论】:

    标签: ios objective-c uitextfield uikeyboard uitextfielddelegate


    【解决方案1】:

    目标-C

    假设您使用的是 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
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以在Connections Inspector 中连接UITextFiled 事件Did End On Exit。在点击Go / Return / 在Attributes Inspector 中选择Return Key 后触发。

      【讨论】:

      • @0x7fffffff 的答案是正确的,通常您还必须包括一些代表,这样UITextField 才能正常工作。所以最好继续使用代码中包含的代表,而不是使用 UIInterfaceBuilder 来完成这个小功能!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      相关资源
      最近更新 更多