iOS

[iOS SDK] UITableView で、上下のスクロール方向を感知する

UITableView でスクロール方向が上か下かで処理を分けたプログラムを書きましたので、メモします。

UITableView と書きましたが、その親クラスである UIScrollView でも、スクロール方向を感知できます。

UITableView のスクロール方向を感知する

スクロール開始位置を持たせる scrollBeginingPoint というのをグローバル変数として用意します。

@interface MasterViewController : UITableViewController {
    CGPoint scrollBeginingPoint;
}

そして、UIScrollViewDelegate のメソッドに以下のように記述します。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    scrollBeginingPoint = [scrollView contentOffset];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint currentPoint = [scrollView contentOffset];
    if(scrollBeginingPoint.y > currentPoint.y)
        NSLog(@"上方向にスクロールさせています.");
}

scrollViewWillBeginDragging で、スクロール開始位置を保存。

scrollViewDidScroll で、現在のスクロール位置とスクロール開始位置を比較して、処理を行わせます。