ios - 如何查看iOS11录屏是开还是关?

标签 ios swift ios11

为了检测 iOS11 屏幕录制功能打开或关闭,我使用了 isCaptured 和 UIScreenCapturedDidChange 通知。

当我第一次启动应用程序并在 iOS11 上内置屏幕录制功能时,它会通知选择器方法值为 True,但是当我终止(终止)我正在运行的应用程序并再次启动应用程序时,再次执行相同的过程然后我的选择器方法未被调用。

这是我的代码:

我在 ViewWillAppear() 方法中添加了一个观察者:

NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)

选择器方法如下:

@objc
func handleNotification(notification:Notification){

    let isCaptured = UIScreen.main.isCaptured

    print("isCaptured value = \(isCaptured)")
}

在这种情况下,我需要终止该应用程序,清除缓存并再次启动该应用程序以获取屏幕录制事件。

请建议我在这里可以做什么来检测录制事件以保护我的内容不被录制。

最佳答案

swift 4

添加观察者

UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil)

接收更改

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
    if (keyPath == "captured") {
        let isCaptured = UIScreen.main.isCaptured

        print(isCaptured)
    }
}

关于ios - 如何查看iOS11录屏是开还是关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232701/

相关文章:

ios - 在自定义键盘上获取键盘高度为 0

ios - 从 app delegate 覆盖默认的 Storyboard View Controller

ios - Swift中配置ios8 VPN配置和控制

ios - Segue 在 DidSelectAtRow 函数之前执行

ios - iOS 11 上的 Phonegap/Cordova 选择选项后再次显示弹出窗口

ios - 从关系中添加/删除对象时更新属性

ios - 允许同时创建多少个 AVPlayer?

swift - iOS 11 UILabel 自动换行在文本太长时不起作用

ios - 如何以弹出形式在 IOS11 Safari 上正确定位光标?

swift - 属性继承类