如何在 iOS 上使用 swift 防止我的应用程序屏幕锁定
Posted
技术标签:
【中文标题】如何在 iOS 上使用 swift 防止我的应用程序屏幕锁定【英文标题】:How to prevent screen lock on my application with swift on iOS 【发布时间】:2015-04-04 10:27:31 【问题描述】:如何仅在使用导航时防止屏幕锁定?
Waze 可以选择这样做,我如何在我的应用程序中做到这一点?
【问题讨论】:
【参考方案1】:斯威夫特 4
在 AppDelegate.swift 文件中,在 application 函数中添加以下行:
application.isIdleTimerDisabled = true
【讨论】:
【参考方案2】:使用这个:
目标-C:
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
Swift(旧版):
UIApplication.sharedApplication().idleTimerDisabled = true
Swift 3 及以上版本:
UIApplication.shared.isIdleTimerDisabled = true
确保导入UIKit
。
Here 是来自 apple.developer.com 的文档链接。
【讨论】:
Swift 应该是UIApplication.sharedApplication().idleTimerDisabled = true
斯威夫特 3:UIApplication.shared.idleTimerDisabled = true
改成UIApplication.shared.isIdleTimerDisabled = true
在哪里添加这一行?我没有 AppDelegate.swift,因为我正在使用 react-native
@PradnyanandMilindPohare 你可以在任何你想要的地方添加它,只要确保这行它被执行【参考方案3】:
如果您有更高级的案例,您可以使用我们的小项目:ScreenSleepManager,或者如果它只是特定的 ViewControllers - 使用前面提到的 Insomnia。手动处理 idleTimerDisabled
几乎总是给我带来一些问题(比如忘记重新设置为 false 或处理多个(嵌套)模块试图设置它)。
【讨论】:
【参考方案4】:对于 Swift 3.0,这里有两个选项,具体取决于您要调用代码的位置:
AppDelegate.swift 内部:
application.idleTimerDisabled = true
AppDelegate.swift 外部:
UIApplication.shared().isIdleTimerDisabled = true
【讨论】:
AppDelegate.swift 外部代码应该是这样的:UIApplication.shared.isIdleTimerDisabled = false
【参考方案5】:
您可以使用我的小库Insomnia(Swift 3、ios 9+)——另一个不错的功能是您可以防止仅在充电时休眠。
idleTimerDisabled
soultion 没问题,但你必须记住之后将其设置为 false
。
【讨论】:
以上是关于如何在 iOS 上使用 swift 防止我的应用程序屏幕锁定的主要内容,如果未能解决你的问题,请参考以下文章
Swift 防止 TabBar 在键盘处于活动状态时向上移动
Swift3 如何像在 android 中一样在 iOS 中实现底部工作表
进入后台状态ios swift时防止websocket连接断开