我正在尝试制作一个非常简单的贴纸iMessage应用程序,当用户点击某些贴纸时,建议用户进行应用内购买。
我有一个实现UIViewController
、UICollectionViewDelegate
、UICollectionViewDataSource
的自定义视图控制器(来源: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
代理人处理。
我还没有找到任何指向这一点的文档。