2010-04-01 6 views
0

Я видел несколько ссылок (например, here) в ответ на людей, имеющих проблемы при получении клавиатуры уволить в iPhone, которые говорят, «двойная проверка, что делегат прилагается к владельцу файла.делегат uitextfield должен быть владельцем файла?

Это всегда верно? Или просто стандартная практика? Могу ли я иметь другие объекты в моем nib, такие как подкласс UIViewController, и устанавливать соединения с такими, какие мне нравятся? Мне бы не хотелось, чтобы все было направлено на объект, который является файловым владельцем.

Это говорит о том, что мне сложно сменить клавиатуру. Я знаю, что она связана с делегатом, потому что я могу установить точки останова и пройти через код. Я вижу, что вызов [theTextField resignFirstResponder] вызван(и верните true), но клавиатура все равно не исчезнет.

Любые другие предложения?

ответ

0

Все элементы управления в определенном виде предназначены для связи с контроллером представления, который владеет файлом nib. Даже если у вас есть, скажем, UISlider, который изменяет значение UITextField, это будет обрабатываться методом в вашем подклассе UIViewController, который запускается, когда значение ползунка изменяется и обновляет текст в текстовом поле. Таким образом, 9 раз из 10 ваш UIViewController будет владельцем файла nib.

Обычно метод делегата текстового поля, который вы хотите определить, - textFieldShouldReturn, вызывая resignFirstResponder в текстовом поле, которое звучит так, как будто вы это сделали.

Убедитесь, что ваша розетка для theTextField также подключена. Это может быть nil, и время выполнения будет обрабатывать [nil resignFirstResponder] как noop, а не как ошибку.

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