2012-07-23 3 views
2

scrollViewDidEndDragging : (UIScrollView *)를 구현했습니다. scrollView willDecelerate : (BOOL) 내 UIScrollViewDelegate에서 감속합니다. 이 메소드는 매우 빠르게 스크롤 할 때를 제외하고 아무 문제없이 호출됩니다. 예를 들어 세 번의 빠른 스 와이프를 수행하는 경우 스크롤보기가 (올바르게) 페이지가 세 번 표시 되더라도 메서드는 한 번만 호출됩니다.빠르게 스크롤 할 때 UIScrollView scrollViewDidEndDragging을 호출하지 않습니다.

수정 사항이 있습니까? 적절한 게으른 로딩 동작을 위해이 방법을 사용하고 있으며, 그것이 호출되지 않으면 시간적으로로드되지 않는다는 것을 의미합니다. 이 방법에 대한 해결책이 없으면 사용자가 스크롤보기에서 손가락을 뗄 때마다 알려주는 다른 방법이 있습니까?

+0

당신은 몇 가지 코드를 게시 할 수 있습니까? 게으른로드 및 재사용 뷰에 대해서는 https://github.com/iVishal/VSScroller.git 클래스를 살펴볼 수 있습니다. –

답변

1

와우 무엇 이전 질문이지만, 어쨌든 여기서 anwser입니다.

scrollView.delegate = self; // or some .m file 

는 구현에

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    NSLog(@"Just a usual drag!"); 
} 

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { 
    // so when dragged quickly, this function will be called instead of didEndDragging 
    // now lets trick it to stop the animation of decelerating 
    [scrollView setContentOffset:[scrollView contentOffset] animated:NO]; 
    // and then call the dragging event like nothing even happened 
    [scrollView.delegate scrollViewDidEndDragging:scrollView willDecelerate:NO]; 
}