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

时间:2014-09-21 08:32:53

标签: swift uikit ios8

是否可以在键盘扩展名中将文本/图像复制到UIPasteboard?与popkey.co对动画图片的作用类似。

我测试了以下代码,它似乎没有用。

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

它始终显示以下错误消息:

  

UIPasteboard - 无法启动粘贴板。确保它已安装在UIKit.framework / Support

您是否了解使用键盘扩展程序进行复制和粘贴的其他方法?

2 个答案:

答案 0 :(得分:20)

如果我提供自定义键盘,那么我就能做到这一点" Full Access"在Settings-> General->键盘应用中。 您需要包含" RequestsOpenAccess"在Info.plist文件中= YES。你必须切换"完全访问"在“设置”应用中。

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

答案 1 :(得分:1)

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

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

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

以下方法将使按钮标记检查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")
   }}

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

希望这有帮助!