-1

ここで、UIScrollView のスクロールが終了したかどうかを簡単に説明する投稿を見つけましたUIScrollView のスクロールが停止したタイミングを正確に知るには? . scrollViewDidEndDragging 関数を使用し、上記の UIScrollView ドキ​​ュメントと投稿で指定されているように、willDecelerate:(BOOL)decelerate パラメーターを使用して、スクロールがいつ停止したかを通知します。ただし、このコード スニペットを機能させることはまだできないようです。

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"%d", decelerate);

    if (!decelerate)
    {
        isScrolling = NO;
    }

    isScrolling = YES;
}

関数が実行されていることを NSLog で確認しましたが、手を離してスクロールが終了しても減速は 1 のままです。これはなぜですか?

4

1 に答える 1

1

-scrollViewDidEndDragging:willDecelerate:ドラッグを停止した後に呼び出されますが、必ずしもビューのスクロールが停止するとは限りません。ビューの移動がいつ停止するかを知りたい場合は、-scrollViewDidEndDecelerating:またはを使用します-scrollViewDidEndScrollingAnimation:

スクロール ビューが現在スクロールしているかどうかだけを知りたい場合は、いつ開始していつ停止するかを追跡するのではなく、スクロール ビュー自体に問い合わせた方がよい場合があります。スクロール ビューがスクロールしている場合は、ユーザーがアクティブにドラッグしているか、ドラッグ後にスクロール ビューが減速しているためです。UIScrollViewこれらの条件の両方をチェックするメソッド (カテゴリ内) を簡単に追加できます。

@interface UIScrollView (Scrolling)
- (BOOL)scrolling;
@end

@implementation UIScrollView (Scrolling)
- (BOOL)scrolling
{
    return (self.dragging || self.decelerating);
}
@end
于 2013-05-29T17:56:49.420 に答える