ฉันมีแอพที่ต้องตื่นตลอดเวลาจนกระทั่งสิ้นสุดการนับถอยหลัง แต่มันจะเข้าสู่ 'โหมดสลีป' ทุกครั้งที่ถึงเวลาจัดสรร
ในแอพของฉันฉันมีตัวเลือกในการเลื่อนการนอนหลับดังนั้นผู้ใช้สามารถปิด / เปิดใช้งานได้
ฉันจะเขียนโปรแกรมได้อย่างไร
ฉันมีแอพที่ต้องตื่นตลอดเวลาจนกระทั่งสิ้นสุดการนับถอยหลัง แต่มันจะเข้าสู่ 'โหมดสลีป' ทุกครั้งที่ถึงเวลาจัดสรร
ในแอพของฉันฉันมีตัวเลือกในการเลื่อนการนอนหลับดังนั้นผู้ใช้สามารถปิด / เปิดใช้งานได้
ฉันจะเขียนโปรแกรมได้อย่างไร
คำตอบ:
คุณสามารถปิดการใช้งานตัวจับเวลาว่างดังนี้
ในวัตถุประสงค์ -C:
[UIApplication sharedApplication].idleTimerDisabled = YES;
ในสวิฟต์:
UIApplication.sharedApplication().idleTimerDisabled = true
ใน Swift 3.0 และ Swift 4.0:
UIApplication.shared.isIdleTimerDisabled = true
ตั้งค่ากลับเป็นNO
หรือfalse
เพื่อเปิดใช้งานโหมดพักเครื่องอีกครั้ง
ตัวอย่างเช่นหากคุณต้องการจนกว่าคุณจะออกจากมุมมองคุณสามารถตั้งค่ามันกลับโดยการแทนที่ viewWillDisappear:
override func viewWillDisappear(_ animated: Bool) {
UIApplication.shared.isIdleTimerDisabled = false
}
เพิ่มเติมเกี่ยวกับUIApplication ชั้น
[UIApplication sharedApplication]
อ้างอิงถึงออบเจ็กต์ UIA ของแอปพลิเคชันของคุณเท่านั้น
ใน Swift 3 เพื่อปิดการใช้งานตัวจับเวลาว่างตอนนี้:
UIApplication.shared.isIdleTimerDisabled = true
หากต้องการเปิดใช้งานตัวจับเวลาไม่ทำงานกลับเป็นเพียง:
UIApplication.shared.isIdleTimerDisabled = false
นอกจากนี้โปรดทราบว่าYES
และNO
ไม่สามารถใช้ได้ใน Swift และคุณต้องใช้อย่างใดอย่างหนึ่งtrue
หรือfalse
(ตรงข้ามกับคำตอบก่อนหน้า)
iOS 13, Swift 5,5.1+เพื่อปิดการใช้งานตัวจับเวลา ในSceneDelegate.swift
.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIApplication.shared.isIdleTimerDisabled = true
}
ใน Swift 3 ตำแหน่งที่แน่นอนซึ่งสามารถทำได้คือAppDelegate.swift
- คุณควรเพิ่มUIApplication.shared.isIdleTimerDisabled = true
ในapplication
func ดังนั้นผลลัพธ์จะเป็นดังนี้:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.isIdleTimerDisabled = true
return true
}