微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

'UIPastebaord.general.hasStrings'在iOS 14.0上不起作用

如何解决'UIPastebaord.general.hasStrings'在iOS 14.0上不起作用

我正在提供一个自定义键盘应用程序。 我正在检查以下代码的“完全访问权限”以激活某些功能。这是我几年前通过该网站发现的有价值的代码。但是我发现下面的代码无法在iOS 14上运行。 UIPasteboard.general.hasstrings始终返回false。 hasImages / hasColors / hasURLs均返回false。但这似乎不是真实的。如果您粘贴,则有一个先前复制的内容,或者仅粘贴了“ 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”和“领域”更新为最新版本 吊舱更新后解决问题 尝试通过在iOS设置中打开/关闭“允许完全访问权限”来连续修改代码 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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。