在Custom KeyBoard Extension中添加贴纸

时间:2015-07-31 07:58:24

标签: objective-c iphone ios8 custom-keyboard

我希望为iPhone,iPad创建自定义键盘。我已成功将短语和表情符号集成到键盘中,但无法知道如何在键盘中添加贴纸。

任何人都知道如何添加?

感谢。

2 个答案:

答案 0 :(得分:8)

我最近创建了一个自定义键盘,用于在iPhone上发送贴纸。我注意到这个问题被标记为Objective-C但我会在Swift中做出回应,因为我就是这样做的。

如果我正确理解您的问题,“在键盘上添加贴纸”可能会引用类似于Facebook Messenger或Peach上的贴纸。我个人的灵感来自想要创造类似Kim Kardashian的KIMOJI应用程序的东西。此自定义键盘扩展程序的工作原理是允许用户点击标签,复制它,然后将其粘贴到输入字段中发送。

首先,我在AppCoda上发现了这个很棒的自定义键盘教程:Creating a Custom Keyboard Using iOS 8 App Extension(用Swift编写)。本教程将指导您如何在应用程序中创建新的键盘扩展,添加包含按钮(或键)的视图,以及应用适当的约束。但是,我发现创建键的所有细节对贴纸键盘来说都不太必要。

在本教程之后,一旦使用KeyboardViewController和KeyboardView xib创建基本键盘,我添加了UIButtons。就我而言,我添加了六个按钮以对应六个贴纸。第一个UIView行和第二个UIView行每个都有三个按钮。我应用了约束,使每个按钮的高度和宽度相等(大约100 x 100)。在Storyboard中,我点击了每个按钮,在属性检查器中,我将按钮“image”属性设置为我在资产中的相应贴纸图像。另外,为了确定键盘的合适高度,我找到了这个有用的资源:iPhone Development 101 - iPhone & iPad Keyboard Sizes

注意:为了创建贴纸,您需要某种图像。我画了/设计了自己的。您也可以使用Adobe Illustrator或等效程序进行设计。

为每个按钮设置图像并运行应用程序后,图像可能不会显示。为了解决这个问题,我不得不访问我的贴纸键盘Target>构建阶段>复制捆绑资源以确保包含Assets.xcassets。再次运行应用程序,图像出现了。

接下来,假设您已经创建了与KeyboardView.xib相对应的KeyboardViewController,您可以为视图控制器中的每个按钮/标签创建相应的@IBAction。我们希望用户将选定的贴纸复制到粘贴板,以便他们可以发送贴纸。要使您的自定义键盘能够访问粘贴板,请进入键盘扩展的Info.plist文件。在信息财产清单> NSExtension> NSExtensionAttributes,将RequestsOpenAccess属性更改为YES。

现在,您创建的IBAction方法可以为Pasteboard分配适当的贴纸图像路径!这通常是我的代码的样子:

@IBAction func stickerPressed(sender: UIButton) {
        let image = UIImage(named: "sticker")
        UIPasteboard.generalPasteboard().image = image
}

当您在设备上运行并测试应用并进行安装时,请单击键盘上的地球图标以切换到自定义键盘。点击按钮/贴纸,然后点击输入字段进行粘贴。在Facebook Messenger中,选项可能显示为“发送照片”“编辑”或“取消”。在Peach或Messages中,它将以内联方式发送。这取决于应用程序。

这个过程对我有用,我希望它可以帮助其他人!

答案 1 :(得分:0)

您可以在UIImageViewUICollectionView内创建UITableView,并在这些UIImageViews内显示贴纸图片。当用户点击它们时,只需在该视图中显示UIImage