4

UIScrollViewDelegate に scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate を実装しました。非常に速くスクロールする場合を除いて、メソッドは問題なく呼び出されます。たとえば、3 回すばやくスワイプすると、スクロール ビューが (適切に) 3 回ページングされても、メソッドは 1 回だけ呼び出されます。

これに対する修正はありますか?私は適切な遅延読み込み動作のためにこのメソッドに依存しています。このメソッドが呼び出されない場合、時間内に読み込まれないことを意味します。この方法に解決策がない場合、ユーザーがスクロール ビューから指を離すたびに通知してくれる別の方法はありますか?

4

1 に答える 1

2

うわー、なんて古い質問ですが、とにかくここに答えがあります。

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];
}
于 2015-08-14T15:45:24.240 に答える