Как я могу воспроизвести поведение прокрутки для прокрутки iPhone UIScrollView в моем собственном пользовательском представлении? - PullRequest
5 голосов
/ 24 апреля 2009

Я хотел бы воспроизвести поведение прокрутки для прокрутки UIScrollView, но я не хочу использовать (или не могу использовать) этот класс. Что я могу сделать?

Ответы [ 4 ]

8 голосов
/ 24 апреля 2009

Хорошо, я ответил на это, реализовав свою собственную библиотеку, которая отражает динамику UIScrollView.

Что полезно в моем коде, так это то, что он не зависит от системы координат, скорости анимации и конкретных классов пользовательского интерфейса, которые вы используете. Он может быть легко вложен в класс по вашему выбору.

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

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

Код доступен на github, здесь: http://gist.github.com/100855. Он выпущен под лицензией BSD.

0 голосов
/ 12 мая 2010

Это круто! Я использовал его в приложении, где мое прокручиваемое представление представляет собой ценность графических данных за один день в диапазоне 1902-2037 гг., Поэтому UIScrollView не будет эффективным.

0 голосов
/ 24 апреля 2009

Дейв, я вижу, что вы ответили на свой вопрос с помощью некоторого кода, но не задает следующее, что вам нужно:

myScrollView.bounces = YES;
myScrollView.pagingEnabled = YES;
myScrollView.directionalLockEnabled = YES;

В частности, это звучит так, как будто вы переопределили directionLockEnabled. Может быть, понимание того, почему вы не можете использовать UIScrollView, является более интересной проблемой: -)

0 голосов
/ 24 апреля 2009

Так что с UIScrollView у вас не работает? Этот класс довольно гибкий ...

...