如何在 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连接断开

iOS Swift - 如何获取本地和远程视频的纵横比?

如何在 IOS 上使用 Swift 解析 JSON,从 PHP 服务脚本发送?

如何防止 React Native 中的静态图像在 iOS 上出现卡顿/异步加载