-->

如何做按钮添加到键盘?(How to add Done button to the keyboard

2019-06-23 11:39发布

更新:

我也尝试推行UITextViewDelegate委托,然后在我的控制器做:

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

我还设置文本视图的代表是自(控制器视图实例)。

点击完成按钮仍然只是插入新行:(


更新:

我迄今所做的。 我已经通过我的视图控制器实现的UITextFieldDelegate。

我已连接文本视图经由出口视图控制器。

然后,我做的:


self.myTextView.delegate = self;

和:

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

但是,当我点击完成按钮,它只是增加了一个新的生产线。

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

然而,我无法关闭键盘。

我如何添加完成按钮键盘,因此它可以被解雇?

Answer 1:

那很简单:)

[textField setReturnKeyType:UIReturnKeyDone];

解雇键盘落实<UITextFieldDelegate>在类的协议,设置

textfield.delegate = self;

和使用

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

要么

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


Answer 2:

进入你的故事板,选择您的文本字段和属性检查器下有,说“返回键” ......选择“完成”选项。

然后进入你的ViewController并添加:

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

然后回到你的文本字段,单击网点和链接“真的结束退出”,以dismissKeyboard行动。



Answer 3:

添加UIToolBar因为这将在它已经完成按钮的UIBarButtonItem自定义视图。

这是做按钮添加到键盘的任何类型更安全,更清洁的方式。 创建UIToolBar添加完成按钮,并设置任何的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;

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

功能

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


Answer 4:

斯威夫特版本:

在您的视图控制器:

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

您的视图控制器后

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


Answer 5:

设置'Return Key'的选项下的text field中检查你的文本字段的选择。 然后右键单击文本字段,并同时按住CTRL选择'Did End On Exit'并拖动到你这个view controllers文件。 这将创建一个IBAction方法。 给这个方法的名称,然后输入以下值:

[textField becomeFirstResponder];
[textField resignFirstResponder];

你的方法应该是这样的:

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


Answer 6:

好了,我也一直在努力与这个非常问题。 目前,我在访问一个UITableViewCell(通过标签)一个UITextView。 因为我使用的原型细胞像其他人建议我不能使用IBActions也不IBOutlets。 相反,我使用;

- (BOOL)的TextView:(UITextView的*)的TextView shouldChangeTextInRange:(NSRange)范围replacementText:(的NSString *)文本

那么这会在每次用户点击一个按钮时为我提供的文本。 然后我的解决办法,是让新行的ASCII字符; “/ n” 个。 如果是已输入的文字,我会辞职的第一响应。 例如;

 // 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]; } } 

不知道是否有人会需要这个哈克解决方案,但我想我会放在那里万一有人需要它!



Answer 7:

这是添加键盘上完成按钮最佳途径

textField.returnKeyType = UIReturnKeyDone;


Answer 8:

以下是我的做法, Swift 3 。 当doneBtn点击,让它发送.editingDidEndOnExit事件。 我用这个事件来处理多个文本框之间的焦点问题。

// My customized UITextField
class MyTextField: UITextField {

    override func awakeFromNib() {
        super.awakeFromNib()

        // Add toolBar when keyboardType in this set. 
        let set : [UIKeyboardType] = [.numberPad, .phonePad]
        if (set.contains(self.keyboardType) ) {
            self.addDoneToolbar()
        }
    }

    // Add a toolbar with a `Done` button
    func addDoneToolbar() {

        let toolbar = UIToolbar()
        let space = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(onToolBarDone))

        toolbar.items = [space, doneBtn]
        toolbar.sizeToFit()

        self.inputAccessoryView = toolbar
    }

    @objc func onToolBarDone() {
        // I use `editingDidEndOnExit` to simulate the `Done` behavior 
        // on the original keyboard.
        self.sendActions(for: .editingDidEndOnExit)
    }
}


Answer 9:

在Interface Builder上的TextView的属性可以设置返回按钮类型做。

然后,你需要检查时,返回按钮采用按压

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

检查文本==“/ N”然后辞职对你的TextView第一响应取消键盘。



文章来源: How to add Done button to the keyboard?