如何检查目标C中屏幕上当前显示的子视图?

时间:2015-10-01 10:50:29

标签: ios objective-c uiview subviews

我想检查哪个子视图现在在屏幕上可见或被其他视图覆盖,我无法通过以下条件进行操作。

if (viewController.isViewLoaded && viewController.view.window) {
  // viewController is visible
}

有人能给我一个子视图的例子吗?

如果viewController是我添加子视图的主控制器,我想检查一下这个控制器的子视图子项的这个条件。

1 个答案:

答案 0 :(得分:0)

您可以通过以下代码段获取最顶层的视图

topMostSubView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];

通常这会给你顶视图,但不保证它对用户可见。它可能在屏幕外,具有0.0的alpha值,或者例如可以具有0x0的大小。

也可能是keyWindow没有子视图,所以你应该首先测试它。

如果你想在最顶层的视图中添加另一个子视图,你可以使用addSubview直接将它添加到keyWindow:它将立即成为最顶层的视图。