Есть ли автоматический способ знать изменения ContentSize в UITableView/UIScrollView?
UITableView/UIScrollView, как автоматически узнать, когда ContentSize изменяется?
Ответ 1
Ответ на самом деле прост с использованием 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
}
}
Я еще не уверен в флагах.
Ответ 2
Для тех, кто не любит KVO:
- (void)setContentSize:(CGSize)contentSize {
[super setContentSize:contentSize];
// Do something.
}
Да, просто используйте super
для доступа к родительскому методу. Предположим, что ваш подкласс UIScrollview/TableView/CollectionView