Как реализовать пользовательскую клавиатуру с UISearchBar?

116
15

В моем приложении я разрабатываю пользовательскую клавиатуру на одном из локальных языков. Теперь эта клавиатура отлично работает с UITextField и UITextView. Для обоих я реализую пользовательскую клавиатуру, как это.

textField.inputView = Customkeyboard;
textView.inputView = Customkeyboard;

Но когда я реализую его для UISearchBar

searchBar.inputView = Customkeyboard;

это дает мне следующую ошибку.

error: объект не может быть установлен - либо свойство readonly, либо нет установителя

Я также устанавливаю его свойство и Synthesis, но не могу решить эту проблему. Может ли кто-нибудь помочь мне решить эту проблему. Thanx.

спросил(а) 2012-10-09T20:34:00+04:00 8 лет назад
1
Решение
114

Вы не сможете установить его для поиска, как UITextField и UISearchBar наследуют от UIResponder, у которого есть свойство UIView как только для чтения, однако UITextField перезаписывает свойство и делает его readAndWrite, но searchBar этого не делает.


Конечно, вы можете создать подкласс UISearchBar и повторно объявить свойство, и это может сработать.

ответил(а) 2012-10-09T20:47:00+04:00 8 лет назад
41

Согласно документации класса UIResponder

Значение этого свойства равно нулю. Объекты ответчика, которым требуется пользовательское представление для сбора ввода от пользователя, должны повторно использовать это свойство как readwrite и использовать его для управления своим пользовательским представлением ввода. Когда получатель впоследствии становится первым ответчиком, инфраструктура ответчика автоматически представляет заданный входной вид. Аналогично, когда представление сбрасывает статус первого ответчика, инфраструктура ответчика автоматически отклоняет указанное представление.

Итак, создайте класс, унаследованный от UISearchBar, как показано ниже.h и.m. В вашем.h файле ad следующие строки

@interface SearchBar: UISearchBar
@property (readwrite, сохранить) UIView * inputView;
@конец

В вашем текущем контроллере, где вы используете это, замените UISearchBar на SearchBar.

searchBar.inputView = Customkeyboard; // Где searchBar является объектом SearchBar, а не UISearchBar

ответил(а) 2012-10-09T20:48:00+04:00 8 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема