2

当应用程序激活时,我们如何找到当前哪个视图是第一响应者。我知道应用程序委托 applicationWillEnterForeground 和 applicationDidBecomeActive 将被调用,我如何使用它来亲密查看哪个是第一响应者。

我用谷歌搜索,堆栈溢出没有找到确切的答案。有什么想法的朋友。。

4

1 回答 1

4

获取对 iOS 应用程序中最顶层视图/窗口的引用

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

请参阅getting-reference-to-the-top-most-view-window-in-ios-application链接。

当应用程序从后台返回时,编辑对当前视图执行的启动操作

Add BOOL applicationFromBackground; make its property in appDelegate.

Intially it will be applicationFromBackground = FALSE; in application didFinishLaunchingWithOptions method;

现在应用程序进入前台:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
   applicationFromBackground = TRUE;
}

现在在所有视图控制器的视图中都会出现方法,该方法将为最顶层的视图控制器调用,所以这样做:

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  // Create AppDelegate instance
  AppDelegate *objAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  if(objAppDelegate.applicationFromBackground)
  {
     applicationFromBackground = FALSE;
     //do what u want.
  }

}
于 2012-09-05T05:02:16.170 回答