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

Arn*_*yno 157 ios

我有一个应用程序,必须保持清醒直到倒计时结束,但只要它达到分配的睡眠时间,它将进入"睡眠模式".

在我的应用程序中,我可以选择推迟睡眠,因此用户可以禁用/启用它.

我该如何以编程方式执行此操作?

jrt*_*ton 372

您可以按如下方式禁用空闲计时器;

在Objective-C中:

[UIApplication sharedApplication].idleTimerDisabled = YES;
Run Code Online (Sandbox Code Playgroud)

在Swift中:

UIApplication.sharedApplication().idleTimerDisabled = true
Run Code Online (Sandbox Code Playgroud)

在Swift 3.0和Swift 4.0中:

UIApplication.shared.isIdleTimerDisabled = true
Run Code Online (Sandbox Code Playgroud)

将其重新设置为NOfalse重新启用睡眠模式.

例如,如果您在离开视图之前需要它,可以通过覆盖viewWillDisappear将其设置为:

override func viewWillDisappear(_ animated: Bool) {
    UIApplication.shared.isIdleTimerDisabled = false
}
Run Code Online (Sandbox Code Playgroud)

有关UIApplication Class的更多信息.

  • @ScottKilbourn它只会影响你的应用.`[UIApplication sharedApplication]`仅指_your_ app的UIApplication对象. (2认同)

Wye*_*tro 20

在Swift 3中,为了禁用空闲计时器,它现在是:

UIApplication.shared.isIdleTimerDisabled = true
Run Code Online (Sandbox Code Playgroud)

要重新打开空闲计时器,它只是:

UIApplication.shared.isIdleTimerDisabled = false
Run Code Online (Sandbox Code Playgroud)

另外,请注意YES并且NO在Swift中不可用,并且您必须使用true或者false(与之前的答案相反).