如何从UITableView子类拦截UIScrollView contentOffset更改?

时间:2010-04-15 10:51:19

标签: iphone uitableview

实际上,UITableView是一个UIScrollView(继承自那个)。现在,我创建了一个UITableView子类并添加了这行代码:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"contentOffset: %@", NSStringFromCGPoint(self.contentOffset));
}

出于某种原因,当我滚动表格视图时,从不调用它。但是由于UITableView有自己的委托属性,我认为它必须实现UIScrollViewDelegate协议,并且是滚动视图本身的委托。不是吗?

我如何拦截滚动位置变化?我只想阅读它们。可能我无法用contentOffset设置它们,对吗?

2 个答案:

答案 0 :(得分:1)

只需实现setContentOffset:并在读取所需的值后调用super。 UITableView是一个UIScrollView,因此您可以通过调用setContentOffset来滚动它:

答案 1 :(得分:1)

  

可能我无法设置它们   contentOffset,对吧?

当UITableView继承自UIScrollView时,您可以获取并设置其contentOffset属性。

另请注意,UITableViewDelegate协议的定义方式如下:

@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>

这也符合UIScrollViewDelegate协议,因此你的tableView的委托(不是UITableView本身)可以实现任何UIScrollViewDelegate方法,它们应该被称为罚款。