【问题标题】:View Controller method for lock button pressed?按下锁定按钮的视图控制器方法?
【发布时间】:2013-08-14 21:22:12
【问题描述】:

当用户按下锁定按钮时,是否有可用的视图控制器方法被调用?我正在寻找类似viewDidDisappear:viewWillDisappear: 的东西,但具体到按下锁定按钮的情况。

【问题讨论】:

  • 电话保持键?
  • 你说的这个“按住按钮”是什么?
  • 手机右上角的按钮。
  • 我的错误——“锁定”按钮
  • 请用'lock'而不是'hold'编辑你的问题

标签: ios objective-c


【解决方案1】:

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

在您的 ViewController 的 viewDidLoad: 中:

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

然后,定义一个方法(我的方法在上面称为screenLocked)并编写您希望在屏幕锁定时执行的代码。

-(void)screenLocked{
    //do stuff
}

另外,要进行一些必要的清理,请将此方法添加到您的 ViewController 中。

-(void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];
}

【讨论】:

    【解决方案2】:

    试试这个:

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
      UIApplicationState state = [application applicationState];
      if (state == UIApplicationStateInactive) {
          NSLog(@"Sent to background by locking screen");
      } else if (state == UIApplicationStateBackground) {
          NSLog(@"Sent to background by home button/switching to other app");
      } 
    }
    

    【讨论】:

    • 注意这是AppDelegate中定义的方法,不是UIViewController的方法。
    • 感谢您的帮助。我专门寻找一种可以在视图控制器内部调用的方法。 hw731 的回答解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    相关资源
    最近更新 更多