使用 删除一些底部行后deleteRowsAtIndexPaths:withRowAnimation:
,我的表格视图的长度会缩小,并且会自动向下滚动以补偿这些底部行的丢失,这意味着它的 contentOffset 已更改。
问题是scrollViewDidScroll:
在这种情况下没有调用。是否有任何其他委托方法可以用来在此处获取有关 contentOffset 更改的通知?
使用 删除一些底部行后deleteRowsAtIndexPaths:withRowAnimation:
,我的表格视图的长度会缩小,并且会自动向下滚动以补偿这些底部行的丢失,这意味着它的 contentOffset 已更改。
问题是scrollViewDidScroll:
在这种情况下没有调用。是否有任何其他委托方法可以用来在此处获取有关 contentOffset 更改的通知?
这听起来像是键值观察的用例。
尝试将此添加到您的控制器:
[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属性,它应该只在添加或删除行时触发此通知。