【问题标题】:iOS8 Custom Keyboard - Copy & Paste to UIPasteboardiOS8 自定义键盘 - 复制和粘贴到 UIPasteboard
【发布时间】:2014-09-21 08:32:53
【问题描述】:

是否可以在键盘扩展中将文本/图像复制到 UIPasteboard?类似于 popkey.co 处理动画图像。

我测试了下面的代码,它似乎没有工作。

func copyImage() {
    UIPasteboard.generalPasteboard().string = "copy test"
}

它总是显示这个错误信息:

UIPasteboard - 无法启动 pasteboardd。确保它已安装在 UIKit.framework/Support 中

您知道从键盘扩展中使用复制和粘贴的任何其他方式吗?

【问题讨论】:

    标签: swift uikit ios8


    【解决方案1】:

    如果我在“设置”->“常规”->“键盘”应用程序中为我的自定义键盘提供“完全访问权限”,我就能做到这一点。 您需要在 Info.plist 文件中包含 "RequestsOpenAccess" = YES。并且您必须在“设置”应用中打开“完全访问权限”。

    似乎 Apple 正在限制对一般 UIPasteboard 的访问。

    【讨论】:

    • 感谢您的建议。我试图将它添加到 Info.plist 文件中,但仍然没有运气。我不再收到错误消息(即使出于某种原因使用原​​始文件),但 UIPasteboard.generalPasteboard() 返回 nil。
    • 你是对的,这是“完全访问”的问题。我将它添加到 Info.plist 的根目录,但必须在 Info.plist -> NSExtension -> NSExtensionAttributes -> RequestsOpenAccess -> YES 中完成,谢谢您的帮助!
    • 它必须在您的键盘扩展的 info.plist 中设置,而不是从您的包含应用程序中设置
    • 感谢您的回答。
    【解决方案2】:

    首先,您必须完全访问自定义键盘才能使用图像/GIF... 在 iPhone 设置 -> 常规 -> 键盘 -> 键盘 -> 添加新键盘...(在第三方键盘下选择您的键盘)-> 单击您的键盘并切换允许完全访问权限

    为此,您必须在位于键盘扩展文件夹中的 info.plist 中设置 RequestsOpenAccess = YES。

    Info.plist -> NSExtension -> NSExtensionAttributes -> RequestsOpenAccess -> 是

    下面的方法会在switch语句中获取button标签检查标签,并根据button标签设置正确的图片到粘贴板。

    func btnPressed(sender: AnyObject) {
    
        var btn = sender as UIButton
    
        switch (btn.tag){
        case 5:
           let imageURL = NSBundle.mainBundle().pathForResource("cat", ofType: "png")
           let data = NSData(contentsOfURL: NSURL(fileURLWithPath: imageURL!)!);
           UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: "public.png")
    
        case 10:
           let imageURL = NSBundle.mainBundle().pathForResource("dog", ofType: "png")
           let data = NSData(contentsOfURL: NSURL(fileURLWithPath: imageURL!)!);
           UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: "public.png")
       }}
    

    然后用户可以将图像粘贴到任何支持的应用程序...

    希望这会有所帮助!

    【讨论】:

    • 可以自动粘贴图片吗?
    • @Veilkrand 不,不能自动粘贴图像。您需要将图像复制到 UiPasteboard 并将其粘贴到输入视图中。
    猜你喜欢
    • 2014-11-29
    • 2015-04-25
    • 2015-10-06
    • 2018-01-28
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多