Как заблокировать выбор стикера в iMessage

Я пытаюсь сделать очень простое приложение iMessage для наклеек, чтобы пользователю предлагалось сделать покупку в приложении, когда они нажимают на некоторые наклейки.

У меня есть собственный контроллер представления, который реализует UIViewController, UICollectionViewDelegate, UICollectionViewDataSource (источник: https://github.com/jelenakrmar/customStickerApp).

Сейчас я пытаюсь переопределить поведение по умолчанию, когда пользователь касается или снимает наклейку.

Моя первая попытка была на уровне collectionView

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// open the in-app purchase window
}

но это не работает

Может быть, мне нужно продлить MSStickerView и сделать что-нибудь вdidTap' а также 'didLongPress".

У кого-нибудь есть опыт переопределения поведения iMessage при выборе стикера?

2 ответа

Решение

Кажется, если ваш UICollectionViewCell имеет MSStickerView (или, возможно, импорт Messages рамки), то didSelectItemAt делегат не вызывается.

Например, если бы я хотел иметь расширение стикера со свободными и заблокированными стикерами, я бы создал две разные ячейки в своем UICollectionView, Один имеет MSStickerView а второй имеет только UIImageView, Если нажать на бесплатную наклейку, iOS обрабатывает все с помощью UICollectionView делегат не уволен. Однако, если пользователь коснется заблокированной наклейки, делегат сработает и может быть обработан didSelectItemAt делегировать.

Я не нашел никакой документации, которая бы указала на это.

Я нахожусь в подобной ситуации, и у меня UICollectionController загружает наклейки через MSStickerView в моем UICollectionViewCell.

Я подклассифицировал UICollectionViewCell и поместил MSStickerView в ячейку contentView. После этого я отключил сенсорный по:

(stickerView)?.isUserInteractionEnabled = false

Функция collectionViewController didSelectItemAt в настоящее время работает.

Другие вопросы по тегам