UITextField - переключение между клавиатурой и UIPickerView

Я работаю над приложением для iPhone, которое использует Core Data. Один из контроллеров представления позволяет пользователю редактировать информацию о кофе, и у него есть UITextField, в котором пользователь может ввести один описательный «тег» для типа кофе.

Я хотел бы настроить UITextField для отображения клавиатуры, если пользователь щелкает в основной области UITextField (для ввода нового тега), и использовать кнопку в качестве его rightView для отображения UIPickerView, который позволит пользователю выбрать из списка известных тегов, которые уже были введены, то есть:

---------------------------------------------
|This area should display keyboard | button |
---------------------------------------------

Что меня смущает, так это то, как переключаться между клавиатурой firstResponder и UIPickerView и обратно, если пользователь щелкает вперед и назад.

Конечно, кто-то уже сделал это, поэтому любые подсказки о том, как это настроить (или правильно ли я использую элементы пользовательского интерфейса iPhone), были бы замечательными! Спасибо!


person Frank Barson    schedule 20.01.2010    source источник


Ответы (3)


Вы можете отслеживать свои активные текстовые поля и средства выбора, используя 2 ссылки, например:

UITextField *activeField;
UIPickerView *activePicker;

Каждый раз, когда текстовое поле начинает редактирование, вы назначаете activeField, чтобы он указывал на него. То же самое и для сборщиков. Я также предполагаю, что у вас уже есть ссылка на это специальное текстовое поле.

Теперь в обработчиках событий для текстового поля и представления средства выбора вы можете контролировать, что происходит, когда текстовые поля начинают / заканчивают редактирование, а также при появлении / исчезновении представления средства выбора. Если у вас есть другие текстовые поля, вам нужно будет проверить, было ли событие инициировано специальным текстовым полем, сравнив его с нашим activeField.

Однако напомню, что в приложении «Контакты» сценарий добавления тегов реализован иначе. Это стандартный способ, да и вам он намного проще.

person Ahmed Abdelkader    schedule 03.02.2010

Вот статья о том, как настроить клавиатуру. Имейте в виду, что вы не можете напрямую объявить свой собственный экземпляр UIKeyboard или создать его подкласс, поэтому ваша единственная надежда - найти представление клавиатуры и внести оттуда свои изменения.

person shawnwall    schedule 20.01.2010

Что касается клавиатуры, вы должны помнить о beginFirstResponder / resignFirstResponder в обратных вызовах делегатов. Независимо от того, для чего предназначена ваша метафора, вы должны уволить отвечающего.

person David Sowsy    schedule 20.01.2010