22

UITableViewaが上方向にスクロールされているのか下方向にスクロールされているのかを知る方法はありますか?

4

8 に答える 8

44
-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint currentOffset = scrollView.contentOffset;
    if (currentOffset.y > self.lastContentOffset.y)
    {
        // Downward
    }
    else
    {
        // Upward
    }
    self.lastContentOffset = currentOffset;
}
于 2012-07-18T08:25:05.063 に答える
29
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView 
                    withVelocity:(CGPoint)velocity 
             targetContentOffset:(inout CGPoint *)targetContentOffset{

    if (velocity.y > 0){
        NSLog(@"up");
    }
    if (velocity.y < 0){
        NSLog(@"down");
    }
}
于 2014-01-21T16:40:08.570 に答える
13

このようにできますか?

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

      if ([scrollView.panGestureRecognizer translationInView:scrollView].y > 0) {
        // down
      } else {
        // up
      }

    }
于 2013-09-19T06:32:12.890 に答える
2

UITableViewUIScrollViewサブクラスであるため、自分自身を として設定し、UIScrollViewDelegateスクロール ビュー デリゲート コールバックを取得できます。

これらのデリゲート メソッドの 1 つ ( -scrollViewDidScroll:) の引数は、スクロールしたスクロール ビューです。それをテーブル ビューと比較して、どちらがスクロールしたかを知ることができます。


申し訳ありませんが、私はあなたの質問を読み違えました。どのテーブルビューがスクロールされているか知りたいと思いました(「方法」を逃しました)。

方向を知るには、前のオフセットを変数に保持し、デルタ (current.y - previous.y) が正 (下にスクロール) か負 (上にスクロール) かを確認します。

于 2012-07-18T08:19:54.483 に答える
1

コンテンツオフセットの違いを追跡できます。古いものをメンバー/静的変数に保持し、現在のものと照合します。古い値が低い場合、スクロールは下に向けられ、その逆も同様です。

于 2012-07-18T08:18:45.020 に答える
1
  override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

        if targetContentOffset.memory.y < scrollView.contentOffset.y {
            //println("Going up!")

        } else {
           // println("Going down!")

        }
    }
于 2016-04-12T04:57:53.817 に答える