如何以编程方式为特定视图控制器禁用/启用睡眠模式?
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 只是手动锁定(如果我理解正确的话?) 是的。如果我回答了您的问题,请不要忘记点击绿色复选标记 谢谢。通常,您也会投票赞成您接受的答案。 是的,我直接投了赞成票。但是因为我在这里相当新,所以我没有足够的积分来让我的投票被“注册”。我对答案很满意:) 我终于可以投票给你的答案了,我现在有了必要的声誉!所以再次感谢以上是关于如何以编程方式为特定视图控制器禁用/启用睡眠模式?的主要内容,如果未能解决你的问题,请参考以下文章