Я решил, что больше не хочу использовать UIPickerView ... он абсолютно негибкий с точки зрения функциональности, дизайна и размера (высоты). Он также иногда застревает между строками, и задержка, возникающая между отпусканием колеса и запуском метода делегата, указывающим, что была выбрана новая строка (из-за анимации «установки»), вызывала много проблем в контекст приложений, над которыми я работал.
При этом удобные для пользователя аспекты UIPickerView хороши, и я хотел бы попытаться воспроизвести его. Я пытался исследовать разные способы, как это можно сделать, но без особого успеха. У кого-нибудь есть идеи относительно того, что может быть сделано для создания чего-то похожего с нуля?
Я пытался заставить подкласс UITableView вести себя так, чтобы любая ячейка, которая в данный момент находилась в середине таблицы (она изменялась при перетаскивании и т. Д.), Меняла цвет фона на что-то другое, подразумевая, что «выбран». Как только таблица была перетащена так, что «выбранная» ячейка больше не находилась посередине, ячейка вернется в нормальное состояние, а новая средняя ячейка изменит цвет. Так что это будет похоже на UIPickerView в том смысле, что вам не нужно нажимать на ячейку; вместо этого вы просто перетаскиваете, чтобы выбрать один по умолчанию.
Я подумал, что должно быть достаточно легко перехватить метод "touchesMoved" UITableView и добавить некоторый код, который проходит по всем видимым в данный момент ячейкам таблицы, проверяя, не перекрывают ли их кадры центральную точку таблицы, и соответственно изменяя их внешний вид (плюс отправляя уведомление другим классам по мере необходимости, чтобы указать изменение «выбора»). К сожалению, я не могу заставить это работать, так как метод "touchesMoved" не вызывается, когда я перетаскиваю таблицу. Я что-то упускаю из виду?
Любые идеи или предложения будут очень цениться на этом этапе ... Я создал приложение, которое в значительной степени зависит от объектов UIPickerView, и из-за проблем, с которыми я столкнулся с ними, мне придется отказаться от него, если только Я могу найти способ заставить эту работу.
Большое спасибо,
Chris