【问题标题】:Why are the view*Disappear methods not being called in iOS?为什么在 iOS 中没有调用 view*Disappear 方法?
【发布时间】:2015-08-25 07:20:30
【问题描述】:

我尝试在单击主页按钮和电源按钮时执行某些操作。我正在使用 iOS 进行开发。

这是我使用的代码:

- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"viewDidDisappear");
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"viewWillDisappear");
}

- (void)applicationFinishedRestoringState{
    NSLog(@"applicationFinishedRestoringState");
}

为什么我在 iPhone 上点击电源键或主页键时没有调用上述函数?

我错过了什么吗?

【问题讨论】:

    标签: ios objective-c viewdidappear application-lifecycle


    【解决方案1】:

    viewDidDisappear:viewWillDisappear: 将被调用,如果视图被推送或弹出,或者无论如何在你自己的运行循环中消失,通过按主页或电源按钮进入后台不计为视图相关事件,但是而是与应用程序相关的事件。您应该注册UIApplicationWillResignActiveNotification 通知。

    例如

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disappearSelector) name:UIApplicationWillResignActiveNotification object:nil];
    

    【讨论】:

      【解决方案2】:

      根据 Apple 的文档

      在接收者的视图即将添加之前调用该方法 到视图层次结构并在配置任何动画之前 显示视图。您可以覆盖此方法以执行自定义任务 与显示视图相关联。例如,您可以使用这个 将状态栏的方向或样式更改为的方法 与正在呈现的视图的方向或样式相协调。 如果你重写了这个方法,你必须在你的某个地方调用 super 实施。

      要获得通知,当您的应用程序恢复时,您应该使用: - (void)applicationDidBecomeActive:(UIApplication *)application这个方法实现在你的AppDelegate.m

      另一方面

      当用户锁定手机时,会发布一个名为 UIApplicationDidEnterBackgroundNotification 的通知。收听方法如下:

      在您的 ViewController 的 viewDidLoad: 中:

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

      然后在你的方法中添加一些东西

      -(void)screenLocked{
          //do stuff
      }
      

      【讨论】:

      • UIApplicationDidEnterBackgroundNotification 将在操作系统决定应用程序实际上应该进入后台时被调用,如果用户很快返回应用程序,它可能根本不会被调用,另一方面,UIApplicationWillResignActiveNotification 将被调用该应用程序不再是最前面的应用程序,并且总是会在主页或电源按钮按下时被调用。
      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 2015-08-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      相关资源
      最近更新 更多