如何在IOS键盘顶部的键盘上添加完成按钮?

我想在iOS右侧的键盘顶部添加Done按钮以获取textView。请告诉我该怎么做?

在此处输入图像描述

我想实现与上述键盘类似的东西

希望这有帮助:)

 UIToolbar* keyboardToolbar = [[UIToolbar alloc] init]; [keyboardToolbar sizeToFit]; UIBarButtonItem *flexBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(yourTextViewDoneButtonPressed)]; keyboardToolbar.items = @[flexBarButton, doneBarButton]; self.yourTextView.inputAccessoryView = keyboardToolbar; 

然后添加yourTextViewDoneButtonPressed方法

 -(void)yourTextViewDoneButtonPressed { [self.yourTextView resignFirstResponder]; } 

斯威夫特3:

 func setDoneOnKeyboard() { let keyboardToolbar = UIToolbar() keyboardToolbar.sizeToFit() let flexBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let doneBarButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(InsertStatusVC.dismissKeyboard)) keyboardToolbar.items = [flexBarButton, doneBarButton] self.fullNameTextField.inputAccessoryView = keyboardToolbar } @objc func dismissKeyboard() { view.endEditing(true) } 

可以使用故事板完成:

  1. 将UITextField添加到UIViewController视图。
  2. 在UIViewController的第一级添加UIToolbar
  3. 将UIBarButtonItem添加到UIToolbar中。
  4. 使用IBOutlet将UItoolbar连接到代码。
  5. 使用IBAction将UIBarButtonItem连接到代码(如didClick)。
  6. 使UITextField将委托给UIViewController。
  7. 在didClick函数结束编辑( view.endEditing(true)
  8. 在委托函数中,textFieldShouldBeginEditing应该是: textField.inputAccessoryView = toolbar并返回true

在此处输入图像描述

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

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

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 

function

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

这个解决方案适用于Swift3 / 4

将此行添加到项目中作为扩展您的问题已解决。

  extension UITextField{ @IBInspectable var doneAccessory: Bool{ get{ return self.doneAccessory } set (hasDone) { if hasDone{ addDoneButtonOnKeyboard() } } } func addDoneButtonOnKeyboard() { let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50)) doneToolbar.barStyle = .default let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonAction)) let items = [flexSpace, done] doneToolbar.items = items doneToolbar.sizeToFit() self.inputAccessoryView = doneToolbar } @objc func doneButtonAction() { self.resignFirstResponder() } } 

延期之前

在此处输入图像描述

延期后

在此处输入图像描述

Ramis的答案允许使用Storyboard创建键盘附件视图是一个很好的策略。 毕竟是2017年! (对不起,但我没有足够的积分来支持你。)

让我在答案中加一点(保持在SO规则范围内)。 我有一个包含多个textFields的视图。 在实现了Ramis的每个步骤之后,我将accessoryView以这种方式附加到所有textFields:

 -(void)textFieldDidBeginEditing:(UITextField *)textField { _activeTextField = textField; [_activeTextField setInputAccessoryView:_iboKeyboardTools]; } 

与在代码中实现所有这些相比,这很容易! 只需在Storyboard中构建附件视图,然后反复附加!