Как перерисовать пользовательский макет коллекции, когда клавиатура видна? - PullRequest
1 голос
/ 11 ноября 2019

У меня есть собственный макет коллекции для рисования ячеек с использованием uicollectionview. Каждая ячейка представления коллекции имеет представление ввода текста. Когда пользователь вводит текст, необходимо изменить размер ячейки. Поэтому я называю представление коллекции недействительным макет. Но он перерисовывает все разделы и строки при подготовке макета, а клавиатура автоматически закрывается. Я хочу, чтобы клавиатура оставалась до тех пор, пока пользователь не нажмет кнопку закрытия. При наборе текста пользователем необходимо увеличить высоту ячейки.

Почему я выбираю пользовательский макет, так как моему приложению нужны параметры диапазона строк и столбцов (объединение и удаление ячеек) в uicollectionview. Это не может быть реализовано в обычном uicollectionviewflowlayout. Может кто-нибудь помочь мне посоветовать этот вопрос?

1 Ответ

0 голосов
/ 14 ноября 2019

О перерисовках

У меня есть пользовательский макет в моем текущем приложении. Он состоит из всех видов ячеек, включая ячейки с текстовыми полями. Я начинаю редактировать ячейку с полем, появляется клавиатура. Затем я нажимаю кнопку в другой видимой ячейке списка желаний, которая добавляет продукт в список желаний. Когда продукт добавлен, я делаю недействительным макет и ячейка списка желаний перезагружается. Во время всех этих манипуляций ячейка поля остается первым респондентом, а клавиатура никуда не денется.

Но она перерисовывает все разделы и строки в подготовительной раскладке, а клавиатура автоматически отклоняется

Вы? уверены, что вы не звоните reloadData()? Это не макет, который перерисовывает все, обычно это разработчик, который вызывает reloadData().

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

Итак,если вы переключитесь с reloadData() на пакетных обновлений - клавиатура останется.

Об изменении размера

Когда вы сделаете недействительным макет, вы подготовите новыйатрибуты для клеток. Атрибуты с новыми размерами / кадрами. Но источник данных тот же. Это означает, что UICollectionView просто переместит ячейки, но они не будут перезагружены. Вам не нужно ничего перезагружать! Просто сделайте недействительными и предоставьте новые атрибуты. Ячейка поля будет автоматически увеличиваться.

Пример

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

enter image description here

Так что, я полагаю, вам просто нужно поработать над макетом. Возможно реализовать желаемое поведение. Удачи и удачного кодирования (:

...