如何通过编程来禁用/启用特定视图控制器的睡眠模式?

4

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

我有三个问题:

  1. 我在特定视图控制器的viewDidLoad方法中使用了以下代码:

    UIApplication.sharedApplication().idleTimerDisabled = true

    阅读之前关于此问题的提问,我相信这是正确的代码。 但这是在代码中的正确位置吗?

  2. 我是否应该在其他视图控制器上使用以下代码(或者不需要,会默认进行操作):

    UIApplication.sharedApplication().idleTimerDisabled = false

  3. 在模拟器中,我使用“硬件” -> “锁定”来模拟锁屏。您认为这将始终只锁定屏幕吗?还是如果我的代码正确,它不会锁定(睡眠模式)我的应用程序在特定的视图控制器上?(因为现在它只在模拟器中锁定)。我如何模拟用户的闲置时间?


在所需的视图控制器的 viewDidAppear()/viewDidDisappear() 中,启用/禁用它。 - Larme
1个回答

12
你需要在viewDidLoad中禁用idleTimer。
UIApplication.shared.isIdleTimerDisabled = true

当您的视图控制器消失时,您会希望重新启用idleTimer,因此请将以下代码放在viewDidDisappear中。
UIApplication.shared.isIdleTimerDisabled = false

你可以通过按下电源按钮手动锁定屏幕,这就是从模拟器手动锁定屏幕时发生的情况。当你这样做时,你的视图会消失,因此应该禁用idleTimer。你可以通过在viewDidDisappear中放置一个打印语句来测试这一点。
在iOS中设置idleTimer的方法是进入设置 > 显示与亮度 > 自动锁定,并指定屏幕锁定之前应该经过的时间长度。最短的间隔是1分钟。如果你不操作并且不按下电源按钮,idleTimer应该被禁用。

1
好的,我明白了,谢谢。那么,为了查看禁用睡眠模式的代码是否有效,最好的方法是在我的iPhone上模拟它,对吗?因为模拟器中的硬件->锁定只是手动锁定(如果我理解正确的话?) - codeDude
是的。如果我回答了您的问题,请不要忘记点击绿色复选标记。 - Adrian
通常情况下,您也会给接受的答案点赞。谢谢。 - Adrian
1
是的,我直接投了赞成票。但由于我在这里还比较新,所以我没有足够的积分来使我的赞成票被“注册”。不过,我对答案感到满意 :) - codeDude
1
终于我可以给你的回答点赞了,我现在有足够的声望了!所以再次感谢。 - codeDude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接