【问题标题】:Add Stickers in Custom KeyBoard Extension在自定义键盘扩展中添加贴纸
【发布时间】:2015-10-22 19:53:04
【问题描述】:

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

有人知道怎么加吗?

谢谢。

【问题讨论】:

  • 你有没有找到为自定义键盘添加贴纸的教程?
  • 抱歉@SamB 回复晚了,我找不到任何教程。

标签: objective-c iphone ios8 custom-keyboard


【解决方案1】:

我最近创建了一个自定义键盘,用于在 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 中,我单击了每个按钮,在属性检查器中,我将按钮“图像”属性设置为我在资产中拥有的相应贴纸图像。此外,为了确定适合我的键盘的高度,我发现了这个有用的资源:@​​987654322@。

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

为每个按钮设置图像并运行应用程序后,图像可能不会出现。为了解决这个问题,我必须访问我的贴纸键盘 Target > Build Phases > Copy Bundle Resources 以确保包含 Assets.xcassets。再次运行应用程序,图像出现了。

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

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

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

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

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

【讨论】:

  • 您的答案对我有用,除了键盘高度计算步骤。扩展中似乎没有收到通知。
  • 你的帖子很有帮助。:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 2016-03-28
    • 2016-09-18
    相关资源
    最近更新 更多