objective-c - UIViewController 可见回调

标签 objective-c ios ios5 uiviewcontroller ios4

我正在开发一个 iOS 应用程序,当我有 Internet 连接时需要做一些事情,而当我没有时需要做其他事情。如果我在某个时候还没有,我会向用户显示一条消息,让我给我上网并回来。问题是如何检测以下情况:

  • 用户按两次主屏幕按钮,进入多任务处理、设置并连接到互联网
  • 用户返回到我的应用进行多任务处理,但没有按任何按钮

我知道我会收到 AppDelegate 的回调:

- (void)applicationDidEnterBackground:(UIApplication *)application
- (void) applicationDidBecomeActive:(UIApplication *)application

但代码(它不是由我启动的)非常大,如果有任何替代方案,我不想在那里处理 UIViewController 需要的代码。

我的 UIViewController 的 - (void)viewDidAppear:(BOOL)animated 当用户返回时它不会被调用。

screenshot

断点肯定不是命!

除了 AppDelegate 之外,还有什么有用的想法吗?

最佳答案

您可以使用通知中心来监听 View Controller 中的applicationDidEnterBackground:

[[NSNotificationCenter defaultCenter] addObserver: self
                                      selector: @selector(handleEnteredBackground:) 
                                      name: UIApplicationDidEnterBackgroundNotification
                                      object: nil];

viewDidLoad 中执行此操作。 applicationDidBecomeActive 也类似。

不要忘记在 viewDidUnload 中将自己作为观察者移除。

关于objective-c - UIViewController 可见回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266909/

相关文章:

ios - 如何以编程方式向 UITextField.leftView 添加约束?

ios - Apple 自动续订订阅 - 根据收据验证用户

ios - iOS 7.1 中的 UIProgressView 自定义轨迹和进度图像

ios - 如何在其他 View Controller 中获取 nsuserdefault 值

objective-c - 我可以在带有 subview 的 NSView 上设置 layer.transform 吗?

iphone - 关于使用 Accelerate.framework 的问题

ios - Tesseract 改进和图像预处理步骤

objective-c - 如何在ios5中进行应用内购买?

cocoa-touch - 可以在 VOIP 应用程序中将多个 tcp 套接字标记为 kCFStreamNetworkServiceTypeVoIP 吗?

objective-c - AVPlayer不播放视频