1

使用 删除一些底部行后deleteRowsAtIndexPaths:withRowAnimation:,我的表格视图的长度会缩小,并且会自动向下滚动以补偿这些底部行的丢失,这意味着它的 contentOffset 已更改。

问题是scrollViewDidScroll:在这种情况下没有调用。是否有任何其他委托方法可以用来在此处获取有关 contentOffset 更改的通知?

4

1 回答 1

0

这听起来像是键值观察的用例。

尝试将此添加到您的控制器:

        [tableView addObserver:self 
                    forKeyPath:@"contentOffset"
                       options:NSKeyValueObservingOptionNew
                       context:nil];

然后,您可以在控制器中实现此方法。

-(void) observeValueForKeyPath: (NSString *)keyPath 
                      ofObject: (id) object
                        change: (NSDictionary *) change 
                       context: (void *) context {

    if ([keyPath isEqualToString:@"contentOffset"]) {

        //Do Something with content offset

    }

}

但是,由于您正在观察 contentOffset 属性,因此每次滚动时都可能会触发此通知。我建议改为观察contentSize属性,它应该只在添加或删除行时触发此通知。

于 2012-04-25T17:22:25.577 回答