【问题标题】:Pausing Game when someone calls/SMS you当有人打电话/发短信给你时暂停游戏
【发布时间】:2010-01-22 04:06:55
【问题描述】:

我想在我的应用上实现这个功能,但我似乎不知道如何使用这行代码。

- (void)applicationWillResignActive:(UIApplication *)application {
 //our app is going to loose focus since there is an incoming call
 [self pauseGame];
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
 //the user declined the call and is returning to our app
 [self resumeGame];
}

我读到这必须放在 appdelegates 中,但我似乎无法弄清楚当游戏当前在视图控制器中时如何调用我的暂停操作。

谢谢。

【问题讨论】:

    标签: iphone objective-c uiapplicationdelegate


    【解决方案1】:

    您可以将消息发送到您的视图控制器,而不是将消息发送给自己(即应用委托)。

    例如,如果您的应用委托有一个名为“gameViewController”的主游戏视图控制器的属性(其中实现了暂停和恢复的方法):

    - (void)applicationWillResignActive:(UIApplication *)application {
        // our app is going to loose focus since there is an incoming call
        [self.gameViewController pauseGame];
    }
    
    - (void)applicationDidBecomeActive:(UIApplication *)application {
        // the user declined the call and is returning to our app
        [self.gameViewController resumeGame];
    }
    

    【讨论】:

    • 好的,知道了。等我回家再试试。谢谢gerry3。
    • 好的,我尝试了你所说的,但我现在遇到了很多错误。问题是我的主要游戏逻辑不在 mymainViewController 中,而是在其自己的 xib 文件的单独视图中。我收到“非结构或联合的成员请求”。谢谢。
    • 我使用了“gameViewController”这个名称来表示任何具有游戏逻辑的视图控制器,因此将暂停和恢复的方法放入其中是有意义的。通常,该错误意味着您没有定义属性或使用该属性导入标头。
    【解决方案2】:

    我知道这是很久以前回答的。但我想补充一点,另一个(更具可扩展性)的解决方案是让相关方(例如 UIViewControllers)注册对 UIApplicationDidEnterBackgroundNotification 和 UIApplicationWillEnterForegroundNotification 的兴趣。

    这种方法的优点是应用程序代理不需要直接了解可能需要响应进入背景/前景的对象。

    【讨论】:

      猜你喜欢
      • 2016-01-09
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      相关资源
      最近更新 更多