Клавиатура iPhone не появляется при вводе UITextField

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

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

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

Спасибо!


person Norm    schedule 03.05.2010    source источник
comment
с той же проблемой, у меня уже есть 4 приложения в AppStore, и я впервые вижу это! Сводит меня с ума.   -  person jsan    schedule 28.08.2010


Ответы (5)


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

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

Hardware > Keyboard > Toggle Software Keyboard

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

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

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

person JCoster22    schedule 12.10.2014
comment
Аппаратная клавиатура, кажется, проверяется при выборе симулятора, и я ввожу cmd-K, думая, что очищаю Xcode temps. Вместо этого симулятор захватывает cmd-K и включает аппаратную клавиатуру. Повторный ввод в симуляторе или использование пункта меню симулятора. Оборудование ›Клавиатура› Переключить программную клавиатуру, как указано выше, выключает его. Надеюсь это поможет. - person glez; 05.04.2018

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

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

person Matt Spradley    schedule 07.02.2011
comment
Спасибо! В моем представлении не было отмечено флажком «Взаимодействие с пользователем». Я работаю с книгой APress, и я снял этот флажок для View, хотя должен был убедиться, что он не отмечен для добавленного мной просмотра изображений. - person Lance Fisher; 11.09.2011

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

person Adam Eberbach    schedule 03.05.2010
comment
В учебнике не требуется подключение к делегату, а только подключение к IBOutlet в контроллере представления. Я прошел через другой учебник, в котором также есть UITextField без делегата, просто подключенный к IBOutlet контроллера представления, и этот сработал. Если это поможет, то руководство, с которым у меня возникли трудности, взято из книги «Начало разработки iPhone 3» Марка и ЛаМарша. - person Norm; 03.05.2010

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

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

person JC Software    schedule 25.05.2010

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

IBOutlet UITextField *textField

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

@property (nonatomic, retain) UITextField *textField;

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

@synthesize textField;

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

person Mike    schedule 21.12.2010