iOS检测到子视图已添加到UIViewContoller的视图中

问题描述 投票:1回答:2

我有一个scrollView,响应于用户交互,将向其中添加和删除自定义视图。我想确保容器视图始终足够大以显示所有子视图,并希望检测何时添加或删除了视图。我尝试使用KVO:

[self.scrollView addObserver:self forKeyPath:@"subviews" options:NSKeyValueObservingOptionNew context:nil];

但是在没有错误的情况下,子视图数更改时,永远不会调用observeValueForKeyPath:...方法。我应该改用什么呢?

P.S。我知道我可以将所需的contentSize属性的计算直接添加到将子视图添加/删除到scrollView的方法中,但是由于架构原因,此选项对我而言较差,我更喜欢KVO之类的方法。是否有这样的选项?

ios objective-c uiview uiscrollview
2个回答
2
投票
创建UIView时,始终会存在

“ subviews”,请尝试观察“ subviews.count”。或者更好的方法,使用UIView中的以下API:

- (void)didAddSubview:(UIView *)subview

请参阅:“观察与视图相关的更改” here


0
投票

您不能KVO子视图,但是可以KVO子层

[self.view.layer addObserver:self forKeyPath:@"sublayers" options:NSKeyValueObservingOptionNew context:nil];
© www.soinside.com 2019 - 2024. All rights reserved.