2010-02-07 1 views
3

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

- (void) scrollViewDidScroll:(UIScrollView *)scrollView; 
- (void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView; 
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 

ответ

0

Существует переменная для текущего ускорения, которая хранится в реализации UIScrollView, но использование этого в качестве решения невозможно, потому что вы не можете скомпилировать код для устройства.

0

Звучит сложно. Пользователь может начать прокрутку снова, пока он замедляется, останавливает его внезапно или нет. Может быть, вы справитесь, просто сделав DidEndDecelerating, а просто обнаружив позицию, когда прокрутка закончится?

+1

Я не могу. Я должен понять это, когда вызывается «scrollViewWillBeginDecelerating». – devinross

0

Это должна быть простая математика. Свойство contentOffset для scrollview обновляется каждый раз, когда вызывается scrollViewDidScroll. Вам нужно сохранить вектор между двумя позициями и время, чтобы получить, по крайней мере, конечное положение спуска замедления.

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

+2

Легче сказал, что сделал. – devinross

2

К сожалению, UIScrollView не работает таким образом - нет способа спросить его, где заканчивается торможение.

3

Этот поток немного устарел, но по-прежнему подходит для поиска этой проблемы.

Протокол UIScrollViewDelegate содержит следующий метод, который говорит ваш код, где вид прокрутки, как ожидается, чтобы остановить ...

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 

Параметр targetContentOffset является INOUT, так что если вы установите его в другое значение, scrollview фактически остановится на указанном вами смещении.

+0

Это на самом деле правильный ответ – Toad

Смежные вопросы