Добавить стикеры в пользовательское расширение клавиатуры

Я хочу создать пользовательскую клавиатуру для iPhone, iPad. Я успешно интегрировал фразы и смайлики в клавиатуру, но не мог понять, как добавить наклейки на клавиатуру.

Кто знает как добавить?

Спасибо.


person Muhammad Burhan    schedule 31.07.2015    source источник
comment
Вы когда-нибудь находили учебник по добавлению наклеек на пользовательскую клавиатуру?   -  person Sam B    schedule 27.11.2015
comment
Извините за поздний ответ @SamB, я не смог найти учебник.   -  person Muhammad Burhan    schedule 01.12.2015


Ответы (2)


Недавно я создал пользовательскую клавиатуру для отправки стикеров на iPhone. Я заметил, что этот вопрос помечен как Objective-C, но я буду отвечать на Swift, поскольку именно так я это и сделал.

Если я правильно понимаю ваш вопрос, «добавить стикеры на клавиатуру» может относиться к стикерам, подобным тем, что есть в Facebook Messenger или Peach. Мое личное вдохновение пришло из желания создать что-то похожее на приложение KIMOJI Ким Кардашьян. Это пользовательское расширение клавиатуры работает, позволяя пользователю нажать на наклейку, скопировать ее, а затем вставить в поле ввода для отправки.

Начнем с того, что на AppCoda я нашел отличное руководство по пользовательской клавиатуре: Создание пользовательской клавиатуры с помощью расширения приложения iOS 8. (написано на Свифте). В этом руководстве вы узнаете, как создать новое расширение клавиатуры в приложении, добавить представление, содержащее кнопки (или клавиши), и применить соответствующие ограничения. Тем не менее, я нашел все детали создания клавиш менее необходимыми для клавиатуры-наклейки.

Следуя руководству, как только вы создадите базовую клавиатуру с помощью KeyboardViewController и KeyboardView xib, я добавил UIButtons. В моем случае я добавил шесть кнопок, соответствующих шести наклейкам. Первая строка UIView и вторая строка UIView содержали по три кнопки каждая. Я применил ограничения, чтобы каждая кнопка была одинаковой высоты и ширины (примерно 100 х 100). В раскадровке я нажимал на каждую кнопку и в инспекторе атрибутов устанавливал для свойства кнопки «изображение» соответствующее изображение стикера, которое было у меня в активах. Кроме того, чтобы определить подходящую высоту для моей клавиатуры, я нашел этот полезный ресурс: iPhone Development 101 - Размеры клавиатуры iPhone и iPad. .

Примечание. Для создания наклеек вам потребуются изображения. Я нарисовал / разработал свой собственный. Вы также можете создать их с помощью Adobe Illustrator или аналогичной программы.

После того, как вы установите изображения для каждой кнопки и запустите приложение, изображения могут не отображаться. Чтобы исправить это, мне пришлось посетить мою клавиатуру с наклейками Target> Build Phases> Copy Bundle Resources, чтобы убедиться, что Assets.xcassets был включен. Запустив приложение снова, изображения появились.

Далее, предполагая, что вы создали KeyboardViewController, соответствующий вашему KeyboardView.xib, вы можете создать соответствующий @IBAction для каждой кнопки/наклейки в контроллере представления. Мы хотим, чтобы пользователь скопировал выбранную наклейку в Pasteboard, чтобы он мог отправить ее. Чтобы ваша пользовательская клавиатура могла получить доступ к Pasteboard, перейдите в файл Info.plist расширения клавиатуры. В разделе Список свойств информации > NSExtension > NSExtensionAttributes измените свойство RequestsOpenAccess на YES.

Теперь созданный вами метод IBAction может назначать соответствующий путь к изображению наклейки на монтажный стол! Вот как выглядел мой код в целом:

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

Когда вы запускаете и тестируете свое приложение на устройстве и устанавливаете его, щелкните значок земного шара на клавиатуре, чтобы переключиться на пользовательскую клавиатуру. Нажмите на кнопку/наклейку, затем нажмите в поле ввода, чтобы вставить. В Facebook Messenger могут отображаться варианты «Отправить фото», «Редактировать» или «Отмена». В «Персике» или «Сообщениях» он будет отправлен встроенным. Это просто зависит от приложения.

Этот процесс сработал для меня, и я надеюсь, что он может помочь кому-то еще!

person schifano    schedule 04.05.2016
comment
Ваш ответ сработал для меня, за исключением шага расчета высоты клавиатуры. Похоже, что уведомления не приходят в расширение. - person Zuzana Paulis; 12.01.2018
comment
твой пост очень помог. :) - person Adrian P; 31.05.2019

Вы можете создать UIImageView внутри UICollectionView или UITableView и показывать изображения стикеров внутри этих UIImageViews. И когда пользователь нажимает на них, просто получайте UIImage в этом представлении.

person Munahil    schedule 31.07.2015