objective-c - 在自定义键盘扩展中添加贴纸

标签 objective-c iphone ios8 custom-keyboard

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

谁知道怎么添加?

谢谢。

最佳答案

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

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

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

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

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

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

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

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

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

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

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

关于objective-c - 在自定义键盘扩展中添加贴纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741015/

相关文章:

iphone - 将图像添加到 HTML 字符串 iphone

objective-c - Coreplot iOS 中的 LEGENDS 上的触摸事件

objective-c - 获取项目中包含的图像的文件名

iphone - UIDatePicker 不显示适当的时间

iphone - 不显示空的分组单元格表格 View

ios - 实例化ViewControllerWithIdentifier后IBOutlet为零

ios - 从 objective-c 中的NSArray移除负数

iphone - UIButton 不更改标题

ios - XCode 7 和 iOS 8 自动布局顶部约束问题

ios - 在 iOS8 中使用 Swift 点击时如何隐藏/显示 tabBar