【问题标题】:Can I get message when I show UIAlertView我可以在显示 UIAlertView 时收到消息吗
【发布时间】:2011-09-30 05:36:15
【问题描述】:

我想在系统显示 UIAlertView 时收到消息,以便我可以暂停游戏。

有人知道怎么解决吗?

UIAlertView 不是我自己控制的。

【问题讨论】:

    标签: iphone notifications uialertview


    【解决方案1】:

    系统警报通常显示在其自己的UIWindow 中。为UIWindowDidBecomeVisibleNotificationUIWindowDidBecomeHiddenNotification 通知安装处理程序以分别跟踪UIWindow 何时变为可见和隐藏:

     [[NSNotificationCenter defaultCenter] addObserver:self
                                              selector:@selector(aWindowBecameVisible:)
                                                  name:UIWindowDidBecomeVisibleNotification
                                                object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self
                                              selector:@selector(aWindowBecameHidden:)
                                                  name:UIWindowDidBecomeHiddenNotification
                                                object:nil];
    

    在处理程序中,从通知的object 属性中获取更改状态的UIWindow

    - (void)aWindowBecameVisible:(NSNotification *)notification
    {
        UIWindow *theWindow = [notification object];
        NSLog(@"Window just shown: %@", theWindow);
    }
    
    - (void)aWindowBecameHidden:(NSNotification *)notification
    {
        UIWindow *theWindow = [notification object];
        NSLog(@"Window just hidden: %@", theWindow);
    }
    

    最后,检查theWindow 是否包含UIAlertView 类型的子视图。

    【讨论】:

      【解决方案2】:

      应用程序委托的applicationWillResignActive: 将在中断时被调用。您可以在那里处理暂停,甚至可以在视图控制器中收听UIApplicationWillResignActiveNotification 并在那里暂停游戏。

      您可以查看iOS 应用指南this part,其中详细介绍了应用的生命周期和状态转换。

      【讨论】:

      • 警报在app中,由gamecenter控制。
      • 我已经解决了。谢谢先生
      【解决方案3】:

      如果您的 UIAlertView 来自第三方应用(而不是来自您的应用),那么您可以实现以下委托方法来暂停和恢复游戏。

      暂停游戏

      - (void)applicationWillResignActive:(UIApplication *)application {
      }
      

      继续游戏

      - (void)applicationDidBecomeActive:(UIApplication *)application {
      }
      

      例如,如果您收到电话或短信,您可以使用上述委托来暂停/恢复游戏。

      【讨论】:

      • 其实当我断开苹果服务器的时候。GameCenter会显示UIAlertView。我当时想做点什么。
      【解决方案4】:

      做这个:

      - (void)applicationWillResignActive:(UIApplication *)application {
      //pause
      }
      - (void)applicationDidBecomeActive:(UIApplication *)application {
      //resume
      }
      

      【讨论】:

        猜你喜欢
        • 2016-04-05
        • 1970-01-01
        • 2016-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多