2

scrollviewスクロールが終わったときに何らかのアクションを実行したいので、そのアクションをscrollViewDidEndScrollingAnimationデリゲートメソッドに記述しました。rectが表示されず、scrollviewが新しいrectにスクロールする場合、正常に機能しています。ただし、rect が既に表示されている場合、メソッドは呼び出されないscrollViewDidEndScrollingAnimationため、内部に記述されたメソッドはscrollViewDidEndScrollingAnimation呼び出されません。しかし、私はそのアクションを呼び出したいのですが、スクロールビューがスクロールを終了したときにそのメソッドを呼び出す方法を知っている人はいますか?

前もって感謝します!

4

2 に答える 2

5

これは何人かの人々を捕まえると思います。実際には、またはメソッドscrollViewDidEndScrollingAnimationのいずれかを明示的に呼び出した場合にのみ呼び出されます。setContentOffset:animated:scrollRectToVisible:animated:

UIScrollViewDelegate プロトコル リファレンスに次のように記載されています。

ディスカッション
スクロール ビューは、setContentOffset:animated: および scrollRectToVisible:animated: メソッドの実装の最後にこのメソッドを呼び出しますが、アニメーションが要求された場合のみです

じゃあ何をすればいいの?通常、スクロール ビューでのコンテンツ データのオフセットはアニメーション化されないことを忘れないでください。むしろ、継続的にcontentOffset値を更新した結果です。そのため、デリゲート メソッドcontentOffsetを使用して、特定のメソッドに基づいてメソッドをトリガーすることができます。scrollViewDidScroll:

または、すべてのスクロール ジェスチャの後に、特にプライベートの後に実行する必要がある場合は、次のUIScrollViewPanGestureRecognizerように実行できますscrollViewDidEndDecelerating:

説明スクロール ビューは、スクロールの動きが停止したときに
このメソッドを呼び出します。UIScrollView の decelerating プロパティは、減速を制御します。

于 2013-05-06T17:10:06.190 に答える
2

scrollViewDidEndDecelerating:両方を実装し、scrollViewDidEndDragging:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    // User lifted finger while scrolling
    [self doPostScrollAction];
}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if(!decelerate)
    {
        // User lifted finger after stopping scrolling
        [self doPostScrollAction];
    }
}
于 2016-11-21T14:45:49.990 に答える