2010-10-23 3 views
2

UITextView не наследуется от UIControl, поэтому нет addTarget: forControlEvent: методы возможны. Раньше я регистрировал метод действия, чтобы отменить первый ответчик, когда происходит UIControlEventEditingDidEndOnExit.Как реагировать на кнопку DONE на клавиатуре при использовании UITextView?

Как это сделать с помощью UITextView? Есть ли какой-то делегат + протокол, который я должен реализовать, чтобы я мог отключить клавиатуру?

ответ

5

Да UITextView имеет протокол делегатов, который вы должны реализовать. Протокол делегата, естественно, называется UITextViewDelegate. Вы должны заметить, просматривая документацию, что есть шаблон; Для любого класса Foo, который имеет протокол делегата, протокол всегда называется FooDelegate, исключений нет.

Теперь вы можете, как Джеймс указал на перехватывание текстовых изменений с помощью делегата UITextView s и убрать клавиатуру. Однако я бы отговорил вас от этого, потому что он нарушает Руководство по человеческому интерфейсу. A UITextView предназначен для редактирования текста с несколькими строками текста, перехватывая ключ ввода, чтобы означать что-то elsa, чем разрывы строк, не рекомендуется.

Если вы хотите, чтобы текстовое поле содержало только одну строку текста или было отклонено клавишей ввода, вы должны использовать UITextField, который также имеет протокол делегатов UITextFieldDelegate. Этот протокол метод предназначен для того, что вы хотите:

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

+0

Хороший вопрос, но как вы официально закончить редактирование UITextView, когда вы не можете использовать клавишу ENTER для этого? В моем случае ENTER kex отображается синим цветом как кнопка DONE. Если я изменил это на Enter, то как убрать эту клавиатуру? –

+0

Вы закрываете клавиатуру, используя '- [UITextView resignFirstResponder]'. Просто сделайте это, используя другое действие пользователя, чем ключ возврата. Вы можете добавить кнопку «Готово» к панели навигации или кнопку «Готово» в 'inputView'' UITextField' или 'UITextField'. Это представление, которое, например, Safari использует для добавления дополнительных элементов управления над клавиатурой при редактировании формы. – PeyloW

+0

КОРРЕКЦИЯ: вы должны использовать 'inputAccessoryView' для добавления над клавиатурой по умолчанию. 'inputView' для замены клавиатуры по умолчанию. – PeyloW

Смежные вопросы