Скрыть виртуальную клавиатуру UITextView при нажатии "Готово"
Я хочу спрятаться (resignFirstResponder
) виртуальная клавиатура UITextView
когда нажимает "Готово". Theres нет "закончился на выходе" в UITextView
, В UITextField
я соединяю "Конец на выходе" с IBAction
и позвонить resignFirstResponder
метод. Как я могу сделать это с UITextView
?
5 ответов
Вот 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()
}
Правильный способ справиться с этим - добавить готовую кнопку в 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];
}
Это должно привести к появлению рабочей кнопки "Готово" на стандартной панели инструментов над клавиатурой.
Я предполагаю, что под кнопкой "Готово" вы подразумеваете клавишу возврата. Это не так интуитивно, как вы думаете. Этот вопрос достаточно хорошо освещен.
Вы можете добавить это к действию, если хотите использовать свой ключ возврата
[[self view] endEditing: YES];
Убедитесь, что вы заявляете о поддержке 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; }