如何以编程方式为特定视图控制器禁用/启用睡眠模式?

Posted

技术标签:

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

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

我有 3 个问题:

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

    UIApplication.sharedApplication().idleTimerDisabled = true

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

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

    UIApplication.sharedApplication().idleTimerDisabled = false

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

【问题讨论】:

在想要的 ViewControllers 的 viewDidAppear()/viewDidDisappear() 中,启用/禁用它。 【参考方案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 只是手动锁定(如果我理解正确的话?) 是的。如果我回答了您的问题,请不要忘记点击绿色复选标记 谢谢。通常,您也会投票赞成您接受的答案。 是的,我直接投了赞成票。但是因为我在这里相当新,所以我没有足够的积分来让我的投票被“注册”。我对答案很满意:) 我终于可以投票给你的答案了,我现在有了必要的声誉!所以再次感谢

以上是关于如何以编程方式为特定视图控制器禁用/启用睡眠模式?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式禁用 Apple Watch 的睡眠模式

如何启用或禁用特定 ViewController 的横向模式?

如何在 iOS 中以编程方式启用睡眠模式?

即使启用了自动布局,我能否以编程方式设置特定视图的框架?

如何在按钮单击时在一个视图控制器中正确启用和禁用约束

如何以编程方式启用和禁用振动模式