Сделать UITextField внутри табличного представления видимой прокруткой

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

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

Я столкнулся с проблемой, чтобы получить такое же поведение, когда пользователь вместо этого нажимает текстовое поле. В этом случае метод didSelectRowAtIndexPath: не вызывается, поэтому я не знаю, как заставить представление таблицы прокручиваться, чтобы убедиться, что «выбранная» строка все еще видна.

Возможно весь процесс не правильный. Вы знаете способ решить эту проблему?

Большое спасибо!


person marzapower    schedule 07.05.2011    source источник


Ответы (1)


Я не совсем уверен в этом, но...

Установите для свойства userInteractionEnabled элемента UITextField значение NO. Таким образом, касание проходит «через» элемент управления, касаясь UITableViewCell. При вызове didSelectRowAtIndexPath: установите для свойства userInteractionEnabled объекта UITextField значение YES. Когда редактирование будет завершено, измените его обратно на NO.

person Evan Mulawski    schedule 07.05.2011
comment
Хорошо, это точно так работает. Я только боюсь, что UITextFields можно оставить с флагом userInteractionEnabled, установленным в YES, если я отключу клавиатуру странным образом (например, касаясь других элементов управления или переключая представления панели вкладок и т. д.). - person marzapower; 08.05.2011
comment
Если вы реализуете метод UITextFieldDelegate textFieldDidEndEditing: и установите там userInteractionEnabled значение NO, этого не произойдет. - person Evan Mulawski; 08.05.2011
comment
@marzapower: Если вам нужна дополнительная помощь, дайте мне знать. - person Evan Mulawski; 09.05.2011