如何在iMessage中阻止选择贴纸



我正在尝试制作一个非常简单的贴纸iMessage应用程序,当用户点击某些贴纸时,建议用户进行应用内购买。

我有一个实现UIViewControllerUICollectionViewDelegateUICollectionViewDataSource的自定义视图控制器(来源:https://github.com/jelenakrmar/customStickerApp(。

我现在正在尝试覆盖用户点击或剥离贴纸时的默认行为。

我的第一次尝试是在集合级别查看

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

但它不起作用

也许我需要扩展MSStickerView并在"didTap"和"didLongPress"中做一些事情。

有没有人在选择贴纸时覆盖iMessage的行为?

我遇到了类似的情况,并且有一个UICollectionController通过我的UICollectionViewCell中的MSStickerView加载贴纸。

我子类化了一个UICollectionViewCell,并将MSStickerView放在单元格内容视图上。 在此之后,我通过以下方式禁用了触摸:

(stickerView)?.isUserInteractionEnabled = false

collectionViewController 函数现在可以工作didSelectItemAt了。

似乎,如果您的UICollectionViewCell具有MSStickerView(或可能导入Messages框架(,则不会调用didSelectItemAt委托。

例如,如果我想有一个带有免费和锁定贴纸的贴纸扩展,我会在我的UICollectionView中创建两个不同的单元格。一个有MSStickerView,第二个只有UIImageView.如果点击免费贴纸,iOS 会处理所有内容,而不会触发UICollectionView委托。但是,如果用户点击锁定的贴图,代理人将触发,并且可以由didSelectItemAt代理人处理。

我还没有找到任何指向这一点的文档。

最新更新