如何在键盘上添加完成按钮?

Ric*_*nop 57 iphone xcode objective-c ios programmatically-created

更新:

我还尝试实现UITextViewDelegate委托,然后在我的控制器中执行:

- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
    [textView resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我还将文本视图的委托设置为self(控制器视图实例).

单击完成按钮仍然只插入一个新行:(


更新:

到目前为止我做了什么.我已经通过我的视图控制器实现了一个UITextFieldDelegate.

我已经通过插座将文本视图连接到视图控制器.

然后我做了:


self.myTextView.delegate = self;
Run Code Online (Sandbox Code Playgroud)

和:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但是当我点击完成按钮时,它只会添加一个新行.

所以我的场景中有一个UITextView元素,当用户点击它时,会出现键盘并可以编辑它.

但是,我无法解雇键盘.

如何将Done按钮添加到键盘以便可以将其解除?

Seb*_*ger 122

这很简单:)

[textField setReturnKeyType:UIReturnKeyDone];
Run Code Online (Sandbox Code Playgroud)

用于解除键盘实现<UITextFieldDelegate>类中的协议,设置

textfield.delegate = self;
Run Code Online (Sandbox Code Playgroud)

并使用

- (void)textFieldDidEndEditing:(UITextField *)textField {
    [textField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

要么

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*e Z 18

进入故事板,选择文本字段,在属性检查器下面有一个选项,显示"返回键"...选择"完成".

然后进入ViewController并添加:

- (IBAction)dismissKeyboard:(id)sender;
{
    [textField becomeFirstResponder];
    [textField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

然后返回到您的文本字段,单击出口并链接"退出时结束"以解除关键操作.


ViJ*_*had 15

添加UIToolBar作为自定义视图,其中包含Done按钮作为UIBarButtonItem.

这是将Done按钮添加到任何类型键盘的更安全,更清晰的方法.创建UIToolBar为其添加Done Button并设置任何UITextField或UITextView的inputAccessoryView.

UIToolbar *ViewForDoneButtonOnKeyboard = [[UIToolbar alloc] init];
[ViewForDoneButtonOnKeyboard sizeToFit];
UIBarButtonItem *btnDoneOnKeyboard = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                               style:UIBarButtonItemStyleBordered target:self
                                                              action:@selector(doneBtnFromKeyboardClicked:)];
[ViewForDoneButtonOnKeyboard setItems:[NSArray arrayWithObjects:btnDoneOnKeyboard, nil]];

myTextField.inputAccessoryView = ViewForDoneButtonOnKeyboard;
Run Code Online (Sandbox Code Playgroud)

IBAction For Done Button

 - (IBAction)doneBtnFromKeyboardClicked:(id)sender
  {
      NSLog(@"Done Button Clicked.");

      //Hide Keyboard by endEditing or Anything you want.
      [self.view endEditing:YES];
  }
Run Code Online (Sandbox Code Playgroud)

SWIFT 3

var ViewForDoneButtonOnKeyboard = UIToolbar()
ViewForDoneButtonOnKeyboard.sizeToFit()
var btnDoneOnKeyboard = UIBarButtonItem(title: "Done", style: .bordered, target: self, action: #selector(self.doneBtnFromKeyboardClicked))
ViewForDoneButtonOnKeyboard.items = [btnDoneOnKeyboard]
myTextField.inputAccessoryView = ViewForDoneButtonOnKeyboard
Run Code Online (Sandbox Code Playgroud)

功能

  @IBAction func doneBtnFromKeyboardClicked (sender: Any) {
     print("Done Button Clicked.")
    //Hide Keyboard by endEditing or Anything you want.
    self.view.endEditing(true)
  }
Run Code Online (Sandbox Code Playgroud)


Esq*_*uth 10

Swift版本:

在您的ViewController中:

textField.returnKeyType = UIReturnKeyType.Done
textField.delegate = self
Run Code Online (Sandbox Code Playgroud)

在您的ViewController之后

extension MyViewController: UITextFieldDelegate {        
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)

  • Swift 4告诉我更新为`func textFieldShouldReturn(_ textField:UITextField)-&gt; Bool {` (2认同)