【问题标题】:How to disable/enable the sleep mode programmatically for a specific view controller?如何以编程方式为特定视图控制器禁用/启用睡眠模式?
【发布时间】:2015-09-08 10:06:33
【问题描述】:

我正在构建一个应用程序,我想在一个特定的viewController 上禁用睡眠模式。

我有 3 个问题:

  1. 我在具体视图控制器的viewDidLoad方法中使用了这段代码:

    UIApplication.sharedApplication().idleTimerDisabled = true

    阅读有关此问题的先前问题,我确信这是正确的代码。 但这是代码中正确的“位置”吗?

  2. 我应该在其他视图控制器上使用以下代码吗(或者这不是必需的,没有它会默认吗?):

    UIApplication.sharedApplication().idleTimerDisabled = false

  3. 在模拟器中,我使用 Hardware -> Lock 来模拟锁屏。你认为这将永远只是锁定屏幕?或者如果我的代码正确,它不会在特定视图控制器上锁定(睡眠模式)我的应用程序吗? (bc 现在它只是将其锁定在模拟器中)。如何模拟用户的空闲时间?

【问题讨论】:

  • 在想要的 ViewControllers 的 viewDidAppear()/viewDidDisappear() 中,启用/禁用它。

标签: ios swift


【解决方案1】:

您需要在 viewDidLoad 中禁用 idleTimer

UIApplication.shared.isIdleTimerDisabled = true

当 yourViewController 消失时,您需要重新启用 idleTimer,因此请将其放入 viewDidDisappear

UIApplication.shared.isIdleTimerDisabled = false

您可以通过按下电源按钮手动锁定屏幕,这就是您从模拟器手动锁定屏幕时发生的情况。执行此操作时,您的视图会消失,因此应禁用 idleTimer。您可以通过在viewDidDisappear 中添加一条打印语句来测试这种情况。

您在 iOS 中设置 idleTimer 的方式是转到 Settings->General->Auto-Lock 并指定屏幕锁定之前应该经过的时间长度。最短间隔为 1 分钟。如果您不理会它并且不按电源按钮,则应禁用 idleTimer。

【讨论】:

  • 好的,我明白了,谢谢。所以最好的办法,看看禁用睡眠模式的代码是否有效,是在我的 iPhone 上模拟它,对吗?因为模拟器中的 Hardware-> lock 只是手动锁定(如果我理解正确的话?)
  • 是的。如果我回答了您的问题,请不要忘记点击绿色复选标记
  • 谢谢。通常,您也会投票赞成您接受的答案。
  • 是的,我直接投了赞成票。但是因为我在这里相当新,所以我没有足够的积分来让我的投票被“注册”。我对答案很满意:)
  • 我终于可以投票给你的答案了,我现在有了必要的声誉!所以再次感谢
猜你喜欢
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 2013-04-14
  • 1970-01-01
  • 2017-05-03
  • 2011-03-12
相关资源
最近更新 更多