iOS8 自定义键盘 - 复制和粘贴到 UIPasteboard

Posted

技术标签:

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

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

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

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

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

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

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

【问题讨论】:

【参考方案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 并将其粘贴到输入视图中。

以上是关于iOS8 自定义键盘 - 复制和粘贴到 UIPasteboard的主要内容,如果未能解决你的问题,请参考以下文章

多个需要复制的内容----自定义复制粘贴--快捷键---的---方法或工具?

在LINUX如何用键盘复制,粘贴啊、

我可以为我的应用禁用自定义键盘 (iOS8) 吗?

复制粘贴的快捷键怎么设置?

iOS8 自定义键盘问题

如何在iOS8自定义键盘中使用自动更正和快捷列表?