Почему UITableView не будет автоматически прокручиваться при редактировании UITextField (в UITableViewCell)? (айфон)


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

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

Проблема, которую я имею двукратное:

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

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

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

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

3 4

3 ответа:

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

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

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

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

- (void)viewWillAppear:(BOOL)animated

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

Использование viewWillAppear в UITableViewController нарушает поведение" Automagic TableView scrolling up when keyboard appears".

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

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

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

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

У вас будет чтобы зарегистрироваться для уведомлений клавиатуры..а затем обновите фрейм tableview. И на следующий и предыдущий.. вы должны программно проверить, какое текстовое поле стало активным..а затем установите рамку соответствующим образом.