'UIPastebaord.general.hasStrings' 不适用于 iOS 14.0

'UIPastebaord.general.hasStrings' not working on iOS 14.0

我提供了一个自定义键盘应用程序。 我正在使用下面的代码检查“完全访问”以激活一些功能。这是我几年前通过这个网站发现的一个有价值的代码。但是我发现下面的代码在 iOS 14 上没有 运行。 UIPasteboard.general.hasStrings 总是 return 错误。 hasImages/hasColors/hasURLs 全部 return 错误。但这似乎不是真的。如果粘贴,则有以前复制的内容或仅粘贴了“TEST”。 'TEST' 用于检查目的,不应打印。

let pasty = UIPasteboard.general
    if pasty.hasURLs || pasty.hasColors || pasty.hasStrings || pasty.hasImages {
        hasFullAccess = true
    } else {
        pasty.string = "TEST"
        if pasty.hasStrings {
            hasFullAccess = true
            pasty.string = ""
        }
    }

我正在深刻反思我才知道的这件事。另外,对于使用我的应用程序的用户,我真的很抱歉。所以我在这里问是因为我想以某种方式解决它。所以,如果有人知道如何修复它,我想让你知道。

到目前为止我做了什么 使用“cocoapod”将“firebase”和“realm”更新到最新版本 修复 pod 更新后的问题 尝试通过在 iOS 设置中打开 on/off 允许完全访问来不断修改代码 Google 搜索…

如果有人知道更好的解决方案,请告诉我。或者,我想为您提供有关问题原因的线索。希望有同样问题的人一起考虑。

感谢您阅读到这里。我会等待某人的帮助。请

我们发现了同样的问题。我们目前的解决方案是在检查完全访问时使用 viewWillAppear 而不是 viewDidLoad。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    
    // We need to check fullAccess after view has appeared in order for UIPasteboard to be available.
    if self.hasFullyAccess() == false {
        // Do whatever.
    }
}

public func hasFullyAccess() -> Bool {
    var hasFullAccess = false
    if #available(iOS 10.0, *) {
        let pasty = UIPasteboard.general
        if pasty.hasURLs || pasty.hasColors || pasty.hasStrings || pasty.hasImages {
            hasFullAccess = true
        } else {
            // We test if we can put something in UIPasteboard, if anything we have access.
            pasty.string = "TEST"
            if pasty.hasStrings {
                hasFullAccess = true
                pasty.string = ""   // Removes string from pasty again.
            }
        }
    }

    return hasFullAccess
}