Почему UITableView не выполняет автоматическую прокрутку при редактировании UITextField (в UITableViewCell)? (IPhone) - PullRequest
4 голосов
/ 12 февраля 2012

Я создал UITableView типа UITableViewStyleGrouped.Затем я создал несколько разных разделов с несколькими строками в каждом.В каждой из этих строк я создал пользовательский UITableViewCell, который содержит UITextField.У меня также есть один UITableViewCell, который содержит UITextView.

. Я также реализовал UIToolbar, который появляется поверх UIKeyboard, который позволяет пользователю перемещаться по UITextField.нажав предыдущий или следующий .

У меня возникла двойная проблема:

  1. Мне нужен UITableView для прокруткитаким образом, когда следующий UITextField (или UITextView) становится первым респондентом, он виден (даже с отображаемой клавиатурой).
  2. Когда выбран UITextField (или UITextView) (без использования кнопок previous и next ) необходимо настроить так, чтобы поле было видно над клавиатурой.

Я посмотрел вокруг на множество различныхучебники, однако, ни один из них не решил мою проблему.Буду очень признателен за любую помощь, которую вы можете предложить.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

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

Ответы [ 3 ]

14 голосов
/ 14 сентября 2012

Вероятно, теперь нет смысла использовать оригинальный постер, но те, у кого возникла такая проблема, когда он когда-то работал, а потом остановился ...

проверьте, что у вас нет:

- (void)viewWillAppear:(BOOL)animated

в вашем подклассе UITableViewController !!!

Использование viewWillAppear в UITableViewController нарушает поведение "автоматическая прокрутка таблиц при появлении клавиатуры".

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

4 голосов
/ 12 февраля 2012

Проверить TaggedLocations Пример кода от Apple.Он делает то же самое без каких-либо дополнительных манипуляций.

Ключ в том, что ваши контроллеры представления следуют стандарту.то есть вы НЕ имеете контроллеры представления контейнера, такие как UINavigationController внутри UIViewController.

0 голосов
/ 12 февраля 2012

Вы должны обновлять таблицу Frame Frame самостоятельно ... и я на 100% уверен, что если вы на 100% уверены, что ваше приложение использовало все вышеперечисленное автоматически ... тогда это не ваше приложение.

Проверьте документы .. здесь есть ссылка

https://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/ManageTextFieldTextViews/ManageTextFieldTextViews.html#//apple_ref/doc/uid/TP40009542-CH10-SW1

Вам придется зарегистрироваться для уведомлений с клавиатуры ... и затем обновить рамку просмотра таблицы. А для следующего и предыдущего ... вы должны программно проверить, какое текстовое поле стало активным ... и затем установить соответствующий кадр.

...