UITableView / UIScrollView如何自动知道ContentSize何时发生变化?

时间:2012-07-02 21:17:03

标签: ios uitableview uiscrollview

是否有自动方式来了解UITableView / UIScrollView中的ContentSize更改?

2 个答案:

答案 0 :(得分:27)

答案实际上很简单,使用KVO(Key Value Observing);

- (id)initWithFrame:(CGRect)frame tableView:(UITableView *)tableView
{
    // ....
    [self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:NULL];
    // ....
}

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{
    if ([keyPath isEqualToString:@"contentSize"]) 
    {
        // Do something
    }
}

虽然我不确定这些旗帜。

答案 1 :(得分:2)

对于那些不喜欢KVO的人:

- (void)setContentSize:(CGSize)contentSize {
    [super setContentSize:contentSize];
    // Do something.
}

是的,只需使用super访问父方法即可。假设您将UIScrollview / TableView / CollectionView

子类化