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

时间:2014-12-03 21:37:50

标签: ios objective-c uiview uiscrollview

我有一个scrollView,为了响应用户互动,我们会添加和删除自定义视图。我想确保容器视图总是足够大以显示所有子视图,并且想要检测添加或删除视图的时间。我尝试过使用KVO:

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

但是虽然没有错误,但是当子视图的数量发生变化时,observeValueForKeyPath:...方法永远不会被调用。我该怎么用?

P.S。我知道我可以将所需的contentSize属性的计算直接放入向scrollView添加/删除子视图的方法中,但出于体系结构的原因,这个选项不如我而且我更喜欢像KVO这样的东西。有这样的选择吗?

2 个答案:

答案 0 :(得分:2)

"子视图"在创建UIView时总是存在,尝试观察" subviews.count"。或者更好的方法,使用UIView中的以下API:

- (void)didAddSubview:(UIView *)subview

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

答案 1 :(得分:0)

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

useEffect(() => {
    getUserId();
  }, invitation);