如何将完成button添加到键盘?

更新:

我也尝试实现UITextViewDelegate委托,然后在我的控制器中做:

- (BOOL)textViewShouldEndEditing:(UITextView *)textView { [textView resignFirstResponder]; return YES; } 

我也将文本视图的委托设置为自我(控制器视图实例)。

点击完成button仍然插入一个新行:(


更新:

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

我已经通过出口将文本视图连接到视图控制器。

然后我做了:


 self.myTextView.delegate = self; 

和:

 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } 

但是,当我点击完成button,它只是添加一个新的行。

所以我有一个UITextView元素在我的场景中,当用户点击它,键盘出现,它可以被编辑。

但是,我不能解雇键盘。

如何将完成button添加到键盘,以便它可以被解雇?

这很简单:)

 [textField setReturnKeyType:UIReturnKeyDone]; 

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

 textfield.delegate = self; 

并使用

 - (void)textFieldDidEndEditing:(UITextField *)textField { [textField resignFirstResponder]; } 

要么

 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } 

进入你的故事板,select你的文本字段,并在属性检查器有一个选项,说:“返回键”…select“完成”。

然后进入你的ViewController并添加:

 - (IBAction)dismissKeyboard:(id)sender; { [textField becomeFirstResponder]; [textField resignFirstResponder]; } 

然后返回到您的文本字段,点击sockets并链接“退出结束”closures键盘操作。

添加UIToolBar作为自定义视图,将作为其中的UIBarButtonItem完成button。

将“完成”button添加到任何types的键盘,这是更安全,更简洁的方法。 创buildUIToolBar添加完成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; 

完成button的IBAction

  - (IBAction)doneBtnFromKeyboardClicked:(id)sender { NSLog(@"Done Button Clicked."); //Hide Keyboard by endEditing or Anything you want. [self.view endEditing:YES]; } 

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) } 

Swift版本:

在你的ViewController中:

 textField.returnKeyType = UIReturnKeyType.Done textField.delegate = self 

在你的ViewController之后

 extension MyViewController: UITextFieldDelegate { func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true } } 

在检查器的文本字段选项下为您的文本字段设置'Return Key'选项。 然后右键单击文本字段,并按住CTRLselect'Did End On Exit'然后将其拖入view controllers文件中。 这将创build一个IBAction方法。 给该方法一个名称,然后input下列值:

 [textField becomeFirstResponder]; [textField resignFirstResponder]; 

你的方法应该是这样的:

 - (IBAction)methodName:(id)sender; { [sender becomeFirstResponder]; [sender resignFirstResponder]; } 

好吧,我也一直在为这个问题而苦苦挣扎。 目前我正在访问一个UITableViewCell中的UITextView(通过标签)。 因为我正在使用原型单元格,所以不能像所有人所说的那样使用IBActions或IBOutlets。 相反,我正在使用;

– (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

每当用户点击一个button时,这将提供给我的文字。 那么我的解决办法就是把新的字符换成新的字符。 “/ n” 个。 如果这是input的文本,我会辞去第一个响应者。 例如;

 // If the text length is 0 then the user is deleting something, so only check the ascii character if there is text to check if (text.length != 0) { // Get the Ascii character int asciiCode = [text characterAtIndex:0]; // If the ascii code is /n or new line, then resign first responder if (asciiCode == 10) { [alertTextView resignFirstResponder]; [DeviceTextView resignFirstResponder]; } } 

不知道是否有人会需要这个hacky解决scheme,但我想我会把它放在那里,以防有人需要它!

这是在键盘上添加完成button的最好方法

 textField.returnKeyType = UIReturnKeyDone; 

在Interface Builder中,可以将返回button的types设置为“完成”。

然后你需要检查什么时候按下返回button

  - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

检查文本==“/ n”,然后退出键盘通过退出你的textView第一响应者。