iOS UICollectionViewCell 点击事件自动化埋点

iOS 中经常要进行埋点,我们这里支持 UICollectionViewCell. 进行自动化埋点,思路:

通过hook UICollectionViewCell 的setSelected:方法,

则新的方法中执行埋点逻辑,并调用原来的方法

直接上代码

复制代码
@implementation UICollectionViewCell (LB)

+ (void)load
{
    instanceMethodExchangeImplementations([self class], @selector(setSelected:), [self class], @selector(setSelectedWithFilter:));
}

-(void)setSelectedWithFilter:(BOOL)selected
{
    // 过滤拼音键盘提示词
    if (selected && !self.skipTrack ) {
        UIView *tempSuperView = self.superview;
        while (tempSuperView) {
            if ([tempSuperView isKindOfClass:[UICollectionView class]]) {
                break;
            }
            tempSuperView = tempSuperView.superview;
        }
        // 非LBScrllView的cell,才由setSelected触发点击采集,LB cell由didSelected触发,
        if (tempSuperView && [tempSuperView isKindOfClass:[UICollectionView class]]
            && ![tempSuperView isKindOfClass:[LBCollectionView class]] && ![tempSuperView isKindOfClass:[LBScrollView class]]) {
            UICollectionView *collectionView = (UICollectionView *)tempSuperView;
            if (![collectionView isDragging] && ![collectionView isTracking] && ![collectionView isDecelerating]) {
                [self setMonitorSelected:selected];
            }
        }
    }
    [self setSelectedWithFilter:selected];
}


- (void)setMonitorSelected:(BOOL)selected
{
    if (selected && !self.skipTrack) {
     //执行埋点逻辑
   }
}

- (void)logClickCell
{
 
}

@end
相关推荐
m0_641031051 小时前
在选择iOS代签服务前,你必须了解的三大安全风险
ios
开开心心loky2 小时前
[iOS] push 和 present Controller 的区别
ui·ios·objective-c·cocoa
明达智控技术3 小时前
MR30分布式I/O模块在化工行业的应用
物联网·自动化
双翌视觉3 小时前
机器视觉的手机柔性屏贴合应用
智能手机·自动化·视觉检测·机器视觉
qinyia6 小时前
用 Wisdom SSH 轻松实现服务器自动化任务调度
服务器·自动化·ssh
明达智控技术7 小时前
MR30分布式I/O在面机装备中的应用
分布式·物联网·自动化
白玉cfc8 小时前
【iOS】push,pop和present,dismiss
macos·ios·cocoa
demaichuandong8 小时前
详细讲解锥齿轮丝杆升降机的加工制造工艺
人工智能·自动化·制造
疯狂的维修8 小时前
c#中public类比博图
c#·自动化
低调小一9 小时前
iOS 开发入门指南-HelloWorld
ios