Да UITextView
имеет протокол делегатов, который вы должны реализовать. Протокол делегата, естественно, называется UITextViewDelegate
. Вы должны заметить, просматривая документацию, что есть шаблон; Для любого класса Foo
, который имеет протокол делегата, протокол всегда называется FooDelegate
, исключений нет.
Теперь вы можете, как Джеймс указал на перехватывание текстовых изменений с помощью делегата UITextView
s и убрать клавиатуру. Однако я бы отговорил вас от этого, потому что он нарушает Руководство по человеческому интерфейсу. A UITextView
предназначен для редактирования текста с несколькими строками текста, перехватывая ключ ввода, чтобы означать что-то elsa, чем разрывы строк, не рекомендуется.
Если вы хотите, чтобы текстовое поле содержало только одну строку текста или было отклонено клавишей ввода, вы должны использовать UITextField
, который также имеет протокол делегатов UITextFieldDelegate
. Этот протокол метод предназначен для того, что вы хотите:
-(BOOL)textFieldShouldReturn:(UITextField*)textField {
[textField resignFirstResponder];
return NO;
}
Хороший вопрос, но как вы официально закончить редактирование UITextView, когда вы не можете использовать клавишу ENTER для этого? В моем случае ENTER kex отображается синим цветом как кнопка DONE. Если я изменил это на Enter, то как убрать эту клавиатуру? –
Вы закрываете клавиатуру, используя '- [UITextView resignFirstResponder]'. Просто сделайте это, используя другое действие пользователя, чем ключ возврата. Вы можете добавить кнопку «Готово» к панели навигации или кнопку «Готово» в 'inputView'' UITextField' или 'UITextField'. Это представление, которое, например, Safari использует для добавления дополнительных элементов управления над клавиатурой при редактировании формы. – PeyloW
КОРРЕКЦИЯ: вы должны использовать 'inputAccessoryView' для добавления над клавиатурой по умолчанию. 'inputView' для замены клавиатуры по умолчанию. – PeyloW