2010-04-15 4 views
4

Как добавить дополнительное перетаскивание в физику UIScrollView. Он прокручивается слишком быстро для того, что я делаю. (Я не хочу вообще отключать, мне все равно нравится эффект резиновой ленты, когда вы дойдете до конца или начала представления.) Есть ли способ замедлить его?iPhone UIScrollView, замедлить прокрутку

ответ

0

Это просто невозможно сейчас. Возможно, Apple в один прекрасный день расширит API, чтобы позволить это, но до этого дня вы застряли со скоростью по умолчанию.

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

Кроме того, у Apple есть патент на некоторые из этих прокручивающих действий, поэтому писать свою собственную может быть даже опасно. Источник: "Apple's touch-screen patent".

Вычислительное устройство, содержащее сенсорный экран; один или несколько процессоров; Память; и одну или несколько программ, в которых одна или несколько программ хранятся в памяти и сконфигурированы для выполнения одним или несколькими процессорами, одна или несколько программ, включая: инструкции для обнаружения одного или нескольких пальцевых контактов с дисплеем сенсорного экрана; инструкции по применению одной или нескольких эвристик к одному или нескольким контактам пальца для определения команды для устройства; и инструкции по обработке команды; в котором одна или несколько эвристик содержат: эвристику с прокруткой по вертикальному экрану для определения того, что один или несколько контактов пальца соответствуют одномерной команде вертикальной прокрутки экрана, а не двумерной команде трансляции экрана, основанной на угле начального движения контакт пальца относительно экрана сенсорного экрана; эвристика двумерного эскиза экрана для определения того, что один или несколько контактов пальца соответствуют двумерной команде трансляции экрана, а не одномерной команде прокрутки по вертикальному экрану, основанной на угле начального движения пальцевого контакта по отношению к сенсорный дисплей; и эвристику следующего элемента для определения того, что один или несколько контактов пальца соответствуют команде перехода от отображения соответствующего элемента в наборе элементов для отображения следующего элемента в наборе элементов.

Но, конечно, я не юрист.

+0

Я думаю, что этот ответ немного устарел. – Jasper

19

На самом деле, после прочтения документации я обнаружил свойство для UIScrollView, который замедляет скроллинг, поэтому Apple, делает это легко доступны для тех, кто еще ищет это:

scrollView.decelerationRate = UIScrollViewDecelerationRateFast; 

Даже если он говорит быстро, его ускоряет замедление, которое фактически замедляет прокрутку вниз. Это было именно то, что мне нужно. И не беспокойтесь о патентах. :)

3

На самом деле вы можете сделать анимацию блока с помощью ScrollToRowAtIndexPath: ... с анимированным набором до NO. Таким образом, анимация блока будет анимировать подкладывающиеся переменные вручную с помощью выбранного времени.

1

Как UICollectionView является подклассом UIScrollView Вы можете использовать метод делегата прокрутки.

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { 
    targetContentOffset->x = (targetContentOffset->x - scrollView.contentOffset.x)/6 + scrollView.contentOffset.x; 
    targetContentOffset->y = (targetContentOffset->y - scrollView.contentOffset.y)/6 + scrollView.contentOffset.y; 
} 
Смежные вопросы