2014-09-21 37 views
9

是否可以在键盘扩展中将文本/图像复制到UIPasteboard?类似于popkey.co对动画图像的处理。iOS8自定义键盘 - 复制并粘贴到UIPasteboard

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

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

它总是显示此错误消息:

UIPasteboard - 发射失败pasteboardd。确保它安装在UIKit.framework /支持

你知道任何其他方式使用复制&从键盘扩展粘贴吗?

回答

20

我能够做到这一点,如果我在设置 - >常规 - >键盘应用程序中给我的自定义键盘“完全访问”。 您需要在Info.plist文件中包含“RequestsOpenAccess”= YES。您必须在“设置”应用中切换“完全访问”。

似乎Apple似乎限制了对普通UIPasteboard的访问。

+0

谢谢您的建议。我试图将其添加到Info.plist文件中,但仍然没有运气。我再也没有得到这个错误(即使是因为某些原因原来的文件),但'UIPasteboard.generalPasteboard()'返回nil。 – 2014-09-23 16:47:13

+8

你是对的,这是一个“完全访问”的问题。我将它添加到Info.plist的根目录,但它必须在Info.plist中完成 - > NSExtension - > NSExtensionAttributes - > RequestsOpenAccess - > YES **感谢您的帮助! – 2014-09-23 21:55:49

+0

它必须在您的键盘扩展的info.plist中设置,而不是来自您的包含应用程序 – Jasper 2014-10-02 14:57:30

1

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

要做到这一点,您必须去位于键盘扩展文件夹中的info.plist中设置RequestsOpenAccess = YES。

的Info.plist - > NSExtension - > NSExtensionAttributes - > RequestsOpenAccess - > YES

下面的方法将获得按钮标签检查switch语句中的标签,并设置正确的图像根据按钮标签的粘贴板。

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") 
    }} 

用户则可以将图像粘贴到任何支持的应用...

希望这有助于!

+0

是否可以自动粘贴图像? – Veilkrand 2016-02-23 02:27:56

+0

@Veilkrand不,它不可能自动粘贴图像。您需要将图像复制到UiPasteboard并将其粘贴到输入视图中。 – Ramakrishna 2017-01-06 07:15:29