Скрыть виртуальную клавиатуру UITextView при нажатии «Готово» - PullRequest
4 голосов
/ 03 марта 2011

Я хочу скрыть (resignFirstResponder) виртуальную клавиатуру UITextView при нажатии «Готово».В «1003» нет «закончился на выходе».В UITextField я соединяю «Закончил ли при выходе» с IBAction и вызываю метод resignFirstResponder.Как я могу сделать это с UITextView?

Ответы [ 5 ]

7 голосов
/ 31 июля 2013

Правильный способ справиться с этим - добавить готовую кнопку в inputAccessoryView к UITextView.inputAccessoryView - это строка, которая иногда появляется над клавиатурой.

Чтобы реализовать inputAccessoryView, просто добавьте этот метод (или его вариант) и вызовите его как viewDidLoad.

- (void)addInputAccessoryViewForTextView:(UITextView *)textView{

//Create the toolbar for the inputAccessoryView
UIToolbar* toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[toolbar sizeToFit];
toolbar.barStyle = UIBarStyleBlackTranslucent;

//Add the done button and set its target:action: to call the method returnTextView:
toolbar.items = [NSArray arrayWithObjects:[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(returnTextView:)],
                       nil];

//Set the inputAccessoryView
[textView setInputAccessoryView:toolbar];

}

Затем обработайте нажатую кнопку, реализовав метод действия, который вы вызвали с помощью resignFirstResponder.

- (void) returnBreakdown:(UIButton *)sender{

[self.textView resignFirstResponder];

}

Это должно привести к появлению рабочей кнопки «Готово» в стандартнойПанель инструментов над клавиатурой.

4 голосов
/ 03 марта 2011

Полагаю, под кнопкой «Готово» вы подразумеваете клавишу возврата.Это не так интуитивно, как вы думаете. Этот вопрос довольно хорошо его охватывает.

3 голосов
/ 02 августа 2013

Убедитесь, что вы заявили о поддержке протокола UITextViewDelegate.

@interface ...ViewController : UIViewController `в .h файле.

В файле .m, реализовать метод ниже

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES; }
3 голосов
/ 25 марта 2013

Вы можете добавить это к действию, если хотите использовать свой ключ возврата [[self view] endEditing: YES];

2 голосов
/ 09 декабря 2015

Вот Swift-версия аксессуара «Готово»:

@IBOutlet weak var textView: UITextView!

// In viewDidLoad()

    let toolbar = UIToolbar()
    toolbar.bounds = CGRectMake(0, 0, 320, 50)
    toolbar.sizeToFit()
    toolbar.barStyle = UIBarStyle.Default
    toolbar.items = [
        UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil),
        UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "handleDone:")
    ]

    self.textView.inputAccessoryView = toolbar

// -----------------

func handleDone(sender:UIButton) {
    self.textView.resignFirstResponder()
}
...