iOS 检测 subview 被添加到 UIViewContoller 的 View

标签 ios objective-c uiview uiscrollview

我有一个 scrollView,自定义 View 正在添加和删除以响应用户交互。我想确保容器 View 总是足够大以显示所有 subview ,并且想检测添加或删除 View 的时间。我尝试使用 KVO:

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

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

附言我知道我可以将所需的 contentSize 属性的计算直接放入向 scrollView 添加/删除 subview 的方法中,但是出于架构原因,这个选项不如我,我更喜欢 KVO 之类的东西反而。有这样的选项吗?

最佳答案

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

- (void)didAddSubview:(UIView *)subview

请引用:《观察 View 相关变化》here .

关于iOS 检测 subview 被添加到 UIViewContoller 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282159/

相关文章:

ios - 我可以使用 XCode 中的 Settings Bundle 编辑器指定除“Settings”之外的 UI吗?

ios - 通过按下按钮随机显示按钮

ios - 如何在 iOS 中将 uitextview 的文本转换为背景图像上的 mask

ios - iOS8 星级控制

ios - 在 Swift 语法中监听 Objective-C 回调

c# - 使用 uitableview 加载 UIView

iOS 屏幕使用 UIAccessibility 画外音不断刷新

ios - swift 。使用拖放正确地一次在 collectionView 中重新排序多个项目

iOS8/iPhone6+ XPC 崩溃

objective-c - 对 NSSet 中所有对象的属性求和的快速方法?