Еще один взгляд на проблему с «клавиатурой затеняет UITextField» - PullRequest
4 голосов
/ 09 января 2010

Я знаю, что это распространенная проблема, и UITableViewController исправил это iPhone SDK 3.0, но UITableViewController не работает, как я ожидаю, возможно, из-за того, как я его использую. Вот моя проблема:

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

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

  1. Создайте XIB с простым видом, на котором есть изображение.
  2. Также внутри XIB у меня есть UIViewController (фактически мой собственный подкласс, когда я пишу методы источника данных и т. Д.), В котором есть таблица.
  3. В моем основном представлении viewDidLoadMethod я пробовал это: tableViewController.view.backgroundColor = [UIColor clearColor]; [self.view addSubview: tableViewController.view];

И действительно, таблица отображается так, как я ожидаю. Однако, когда я нажимаю на текстовое поле в таблице, я не получаю "волшебную" прокрутку, которую tableViewController должен предоставить мне бесплатно.

В его нынешнем виде, это то же самое поведение, что я вообще не использовал TableViewController и перетянул таблицу прямо в imageView. (Что, честно говоря, делает на 1 класс меньше и легче для чтения кода).

Единственная причина, по которой я ввел TableViewController - это автоматическая прокрутка.

Что-то мне не хватает?

Ответы [ 3 ]

1 голос
/ 03 февраля 2010

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

0 голосов
/ 17 мая 2012

(повторение моего ответа от другого SO вопроса):

Лично я настоятельно рекомендую использовать TPKeyboardAvoiding от Michael Tyson.

Это очень легко использовать ... (цитата из Read Me):

Для использования с UITableViewController классы, drop TPKeyboardAvoidingTableView.m и TPKeyboardAvoidingTableView.h в ваш проект, и сделайте ваш UITableView TPKeyboardAvoidingTableView в хиб. Если вы не используете XIB с вашим контроллером, я знаю нет простого способа сделать его UITableView пользовательским классом: путь наименьшего Сопротивление состоит в том, чтобы создать xib для этого.

Для не UITableViewControllers , опустите TPKeyboardAvoidingScrollView.m и TPKeyboardAvoidingScrollView.h Исходные файлы в ваш проект, вставьте UIScrollView в ваш вид XIB контроллера, установите класс представления прокрутки в TPKeyboardAvoidingScrollView, и поместите все свои элементы управления в этом просмотр прокрутки. Вы также можете создать его программно, не используя xib - просто используйте TPKeyboardAvoidingScrollView в качестве верхнего уровня вид.

0 голосов
/ 12 января 2010

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

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

...