如何阻止在iMessage中选择贴纸

时间:2017-07-01 15:34:43

标签: ios imessage msstickerview

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

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

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

我的第一次尝试是在collectionView

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

但它不起作用

也许我需要延长MSStickerView并在“didTap”和“didLongPress”中执行某些操作。

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

2 个答案:

答案 0 :(得分:1)

我处于类似的情况,并通过我的UICollectionViewCell中的MSStickerView加载UICollectionController贴纸。

我将UICollectionViewCell子类化并将MSStickerView放到单元格contentView上。在此之后,我禁用了触摸:

didSelectItemAt

collectionViewController函数print(x) if x<2**31 else x-2**32 现在有效。

答案 1 :(得分:0)

好像,如果您的UICollectionViewCellMSStickerView(或可能是导入Messages框架),则didSelectItemAt委托不会被调用。

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

我还没有发现任何指向此的文档。