【问题标题】:Finding the current view when application enter foreground. IOS应用程序进入前台时查找当前视图。 IOS
【发布时间】:2012-09-05 04:47:36
【问题描述】:

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

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

【问题讨论】:

  • “当前显示的是哪个视图”是什么意思?在任何给定时刻,您都可以看到许多视图。你的意思是哪个视图是当前事件的第一响应者?或者是其他东西。请澄清您的问题。
  • @user1118321 你说得对,我说的是接收用户交互的视图,第一响应者。

标签: iphone objective-c ios xcode cocoa-touch


【解决方案1】:

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

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

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

EDIT在应用程序从后台返回时对当前视图执行操作

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.
  }

}

【讨论】:

  • 参考我在回答中提供的链接,因为它将解决您的所有问题
  • Prince - 我检查了您的链接,谢谢,它很有帮助,最后一个问题。使用这个我如何告知我所有的观点。如果我的问题是错误的,对不起。
  • 我不明白您的具体要求是什么?
  • 当应用程序进入前台时,我想通知一个特定的视图(如果是顶视图)并在该视图中执行一些操作。我会从应用程序代表那里知道应用程序进入前台,下一步该做什么..这是我的问题..希望清楚。
  • 非常感谢您的耐心等待和宝贵的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多