О перерисовках
У меня есть пользовательский макет в моем текущем приложении. Он состоит из всех видов ячеек, включая ячейки с текстовыми полями. Я начинаю редактировать ячейку с полем, появляется клавиатура. Затем я нажимаю кнопку в другой видимой ячейке списка желаний, которая добавляет продукт в список желаний. Когда продукт добавлен, я делаю недействительным макет и ячейка списка желаний перезагружается. Во время всех этих манипуляций ячейка поля остается первым респондентом, а клавиатура никуда не денется.
Но она перерисовывает все разделы и строки в подготовительной раскладке, а клавиатура автоматически отклоняется
Вы? уверены, что вы не звоните reloadData()
? Это не макет, который перерисовывает все, обычно это разработчик, который вызывает reloadData()
.
Я хочу, чтобы клавиатура оставалась в рабочем состоянии, пока пользователь не нажмет кнопку закрытия.
Итак,если вы переключитесь с reloadData()
на пакетных обновлений - клавиатура останется.
Об изменении размера
Когда вы сделаете недействительным макет, вы подготовите новыйатрибуты для клеток. Атрибуты с новыми размерами / кадрами. Но источник данных тот же. Это означает, что UICollectionView
просто переместит ячейки, но они не будут перезагружены. Вам не нужно ничего перезагружать! Просто сделайте недействительными и предоставьте новые атрибуты. Ячейка поля будет автоматически увеличиваться.
Пример
В О перерисовках Я описал способ перезагрузки ячейки желаний. Также я добавил изменение атрибутов поля. Теперь вы можете видеть, что клавиатура остается и размер ячейки поля изменяется. Теперь это выглядит так:
Так что, я полагаю, вам просто нужно поработать над макетом. Возможно реализовать желаемое поведение. Удачи и удачного кодирования (: