【问题标题】:How to check which subview is currently displayed on screen in objective C?如何检查目标 C 屏幕上当前显示的子视图?
【发布时间】:2015-10-01 10:50:29
【问题描述】:
我想检查哪个子视图现在在屏幕上可见或被其他视图覆盖,在以下情况下我无法做到这一点。
if (viewController.isViewLoaded && viewController.view.window) {
// viewController is visible
}
谁能给我一个子视图的例子?
如果 viewController 是我添加子视图的主控制器,我想检查此控制器的子视图子之一的条件。
【问题讨论】:
标签:
ios
objective-c
uiview
subviews
【解决方案1】:
您可以通过以下代码sn-p获得最顶部的视图
topMostSubView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
通常这将为您提供顶视图,但不能保证它对用户可见。例如,它可能不在屏幕上,alpha 为 0.0,或者大小为 0x0。
也可能是 keyWindow 没有子视图,所以你应该先测试一下。
如果你想在最顶层的视图上添加另一个子视图,你可以简单地使用 addSubview: 将它直接添加到 keyWindow 中,它会立即成为最顶层的视图。