В сообщении, Создание длинных свитков на iPhone не сосет , Аза Раскин описывает альтернативный элемент управления полосой прокрутки, который лучше справляется с очень длинными страницами:
Не важно, чтобы полоса прокрутки «оставалась на некоторое время», чтобы активировать ее; Я в порядке, просто проведя пальцем по правому краю экрана iPhone, чтобы ухватиться за ручку полосы прокрутки. Идея состоит в том, что если я перетащу ручку на 3/4 вниз на физическом экране, я буду на 3/4 вниз на странице.
Приложение Dropbox для iPhone (это здорово, кстати!) Имеет именно такую полосу прокрутки для длинных PDF-документов. Регулярная прокрутка выполняется перетаскиванием в любое место, кроме ручки; перетаскивание ручки перемещает вид в это место. Кажется, это было реализовано «с нуля», так как я не думаю, что SDK достаточно гибок, чтобы настроить поведение существующей полосы прокрутки.
Однако Dropbox использует собственные средства просмотра документов для отображения документов на iPhone, поэтому они каким-то образом добавляют к нему функциональность полосы прокрутки. Видите ручку полосы прокрутки? Вы можете перетащить это, чтобы быстро получить где-нибудь еще в документе.
Эта концепция очень похожа на работу индексных полос в UITableView (т.е. Contacts.app); индекс отображается в виде столбца с правой стороны таблицы (например, от «а» до «z»), и вы можете нажать на конкретную метку, чтобы перейти к целевому разделу. В этом случае, однако, на очень длинной странице нет разделов, и она должна работать для прокрутки общего назначения, а не для перехода к разделам.
Так как же я могу реализовать этот метод прокрутки? Я ищу общие идеи и конкретные детали реализации. Мне также интересно, существует ли реализация с открытым исходным кодом (это похоже на проблему / решение общего назначения).