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的主要内容,如果未能解决你的问题,请参考以下文章