tvos:视图控制器如何检测用户已选择"取消"在"睡眠/取消"屏幕

时间:2015-12-21 12:15:38

标签: tvos

在" tvos"中,如果用户正在观看应用并长时间按下" Home"按钮,然后它出现一个系统屏幕,有两个选项("睡眠" /"取消"),即:

现在睡觉? 睡眠/取消

我想知道是否有办法在我的应用程序的视图控制器中检测按钮"取消"已被选中或者至少有机会在从系统屏幕返回后使用" Sleep / Cancel"选项执行某些代码,如果"取消"选项已被选中;因为在这种情况下,像" viewWillAppear,..."不叫。

2 个答案:

答案 0 :(得分:3)

在您的应用程序委托类中,当出现“睡眠/取消”菜单时,应调用方法applicationWillResignActive

如果用户选择取消,则应该在应用程序获得焦点时调用方法applicationDidBecomeActive

当您的应用程序进入后台和前台时(例如,当您长按" MENU按钮)时,您应该获得相同的事件。

答案 1 :(得分:1)

我尝试了另一种解决方案;也就是说,在“ViewController”的“viewWillAppear”中我感兴趣的是,我添加了以下通知:

 - (void)viewWillAppear:(BOOL)animated{
     [super viewWillAppear:animated];
     NSNotificationCenter * nc = [NSNotificationCenter defaultCenter];
     [nc addObserver:self selector:@selector(appWillEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil];
 }

 - (void) viewWillDisappear:(BOOL)animated{
     [super viewWillDisappear:animated];
     [[NSNotificationCenter defaultCenter] removeObserver:self];  
 }

 - (void) appWillEnterForeground:(NSNotification *)notification {
     //DO YOUR DESIRED ACTION
}

通过这种方式,我可以在“ViewController”中检测到我从“取消”操作回来了