клавиатура iPhone не появляется при входе в UITextField - PullRequest
11 голосов
/ 03 мая 2010

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

Я следовал учебному пособию для iPhone с UITextField, убедившись, что я подключил IBOutlet для текстового поля, и он, кажется, компилируется правильно (без ошибок или предупреждений). Но когда я запускаю его под симулятором и щелкаю в поле, я не получаю клавиатуру, поэтому не могу ничего вводить в поле.

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

Спасибо!

Ответы [ 5 ]

17 голосов
/ 12 октября 2014

Просто чтобы покрыть все ваши базы при устранении неполадок, убедитесь, что это не симулятор iOS, который вызывает это. Я не видел, чтобы клавиатура появлялась при входе в UITextView, и оказывается, что симулятор позволяет вам переключаться между отображением виртуальной клавиатуры и просто использованием клавиатуры вашего ноутбука.

Вы можете переключаться между ними с помощью:

Hardware> Keyboard> Toggle Software Keyboard

или нажмите Cmd + K .

(мой источник: https://stackoverflow.com/a/24401535/1700540)

Поэтому убедитесь, что вы по ошибке не переключили симулятор на использование только физической клавиатуры! ... как у меня было

6 голосов
/ 07 февраля 2011

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

Одна вещь, которую вы должны проверить, - убедиться, что в содержащем представлении ( UIView , содержащем все элементы управления), который является значком представления в средстве просмотра пера Interface Builder, есть Взаимодействие с пользователем включено проверено. Если родительский контейнер не проверил это, даже если отдельные элементы управления имеют, вы увидите это поведение.

3 голосов
/ 03 мая 2010

С чем связан делегат для UITextField? Вы удостоверились, что функции делегата, особенно - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField , возвращают правильную вещь (в данном случае ДА)?

1 голос
/ 21 декабря 2010

По сути, единственное, что вам нужно сделать, это объявить текстовое поле в .h

IBOutlet UITextField *textField

затем объявите с тем же именем в свойстве

@property (nonatomic, retain) UITextField *textField;

, затем убедитесь, что вы синтезируете в .m

@synthesize textField;

тогда вам нужно связать поле в конструкторе интерфейсов

1 голос
/ 25 мая 2010

Не уверен, что это чья-то еще проблема, но я использовал TextField в контроллере TabBar, отображаемом модально, и добавил жест встряхивания в свой контроллер основного вида. К сожалению, это означало, что я устанавливал [self intoFirstResponder] в viewDidLoad. В том случае, когда отображался мой модальный вид, он не становился первым респондентом и, следовательно, клавиатура не отображалась.

Чтобы исправить это, я добавил [self resignFirstResponder] как раз перед вызовом модального дисплея, и все снова хорошо! Yay (потребовалось всего пять дней, чтобы понять это).

...