将完成按钮添加到键盘顶部

时间:2014-02-07 18:25:16

标签: ios iphone keyboard

我正在制作一个具有UITextView的通用应用。 当应用程序在iPad上运行时,右下角有一个按钮,可以让我关闭键盘。 iPhone版没有这样的按钮。 我在一些iPhone应用程序上看到键盘顶部有一个带有完成选项的栏。 是否有一种简单的方法可以将iPad风格的键盘按钮添加到iPhone应用程序中。 如果没有,将完成样式栏添加到键盘顶部的最佳方法是什么? 提前谢谢。

4 个答案:

答案 0 :(得分:22)

请尝试此代码

 //set up a placeholder variable for the textfield user typing
 UITextView *currentTextView;

-(void)addDoneToolBarToKeyboard:(UITextView *)textView
{
    UIToolbar* doneToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    doneToolbar.barStyle = UIBarStyleBlackTranslucent;
    doneToolbar.items = [NSArray arrayWithObjects:
                       [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneButtonClickedDismissKeyboard)],
                       nil];
    [doneToolbar sizeToFit];
    textView.inputAccessoryView = doneToolbar;
}

 //remember to set your text view delegate
 //but if you only have 1 text view in your view controller
 //you can simply change currentTextField to the name of your text view
 //and ignore this textViewDidBeginEditing delegate method
 - (void)textViewDidBeginEditing:(UITextView *)textView
 {
     currentTextView = textView;
 }

-(void)doneButtonClickedDismissKeyboard
{
     [currentTextView resignFirstResponder];
}

并在您的视图中添加此功能

 [self addDoneToolBarToKeyboard:self.textView];

希望有所帮助

答案 1 :(得分:4)

相同答案 swift3

func addDoneToolBarToKeyboard(textView:UITextView)
{
    let doneToolbar : UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 50))
    doneToolbar.barStyle = UIBarStyle.default
    let flexibelSpaceItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

    let hideKeyboardItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(self.dismissKeyboard))
    doneToolbar.items = [flexibelSpaceItem, hideKeyboardItem!]
    doneToolbar.sizeToFit()
    textView.inputAccessoryView = doneToolbar
}

和解雇功能将是:

func dismissKeyboard()
{
  self.view.endEditing(true)
}

答案 2 :(得分:2)

您可以随时在一行代码中执行此操作:

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) 
                                           to:nil 
                                         from:nil
                                     forEvent:nil];

向响应者链发送resignFirstResponder。当前的文本视图将是第一个响应者,因此它将获取消息并辞职第一响应者。

答案 3 :(得分:0)

我知道这是一个太迟的答案,但在iOS 8中,我不会在回答之前隐藏我的TEXT View的键盘。

仅供参考我只是添加此内容。

// Para esconder el teclado al oprimir el fondo de la pantalla
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.answerTextView endEditing:YES];
}

摘自theapplady