164

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

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

我如何以编程方式进行操作?

4

4 回答 4

387

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

在 Objective-C 中:

[UIApplication sharedApplication].idleTimerDisabled = YES;

在斯威夫特:

UIApplication.sharedApplication().idleTimerDisabled = true

在 Swift 3.0 和 Swift 4.0 中:

UIApplication.shared.isIdleTimerDisabled = true

将其设置回NOfalse重新启用睡眠模式。

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

override func viewWillDisappear(_ animated: Bool) {
    UIApplication.shared.isIdleTimerDisabled = false
}

更多关于UIApplication 类

于 2012-09-30T12:05:04.047 回答
24

在 Swift 3 中,要禁用空闲计时器,现在是:

UIApplication.shared.isIdleTimerDisabled = true

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

UIApplication.shared.isIdleTimerDisabled = false

此外,请注意YESandNO在 Swift 中不可用,您必须使用trueor false(与之前的答案相反)。

于 2016-10-31T04:22:09.220 回答
4

iOS 13、Swift 5,5.1+禁用空闲计时器。在SceneDelegate.swift.

 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
     UIApplication.shared.isIdleTimerDisabled = true
 }
于 2020-05-25T06:43:04.017 回答
-6

在 Swift 3 中可以做到这一点的确切位置是AppDelegate.swift- 您应该UIApplication.shared.isIdleTimerDisabled = trueapplicationfunc 中添加,因此结果将如下所示:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UIApplication.shared.isIdleTimerDisabled = true
    return true
}
于 2017-08-12T13:10:00.837 回答