在deleteRowsAtIndexPaths之后,contentOffset的任何委托方法都会更改通知

时间:2012-04-25 16:35:25

标签: ios uitableview

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

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

1 个答案:

答案 0 :(得分: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 属性,该属性只应在添加或删除行时触发此通知。