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
相关推荐
用户2235862182014 小时前
WebKit WebPage API 的引入尝试与自研实现
ios
Benszen14 小时前
Ansible自动化运维实战
linux·运维·自动化·ansible
qqxhb15 小时前
23|工具生态全景:本地文件、网络、数据库、浏览器自动化
网络·数据库·自动化·ai编程·最小权限·人工确认
啦啦啦!15 小时前
ChatGPT和Gemini的接入和封装
人工智能·ios·chatgpt
aosky15 小时前
手机远程畅玩OpenAI Codex
macos·智能手机·cocoa
报错小能手16 小时前
ios开发方向——swift并发进阶核心 async/await 详解
开发语言·ios·swift
开心就好202516 小时前
HTTPS超文本传输安全协议全面解析与工作原理
后端·ios
祭曦念17 小时前
越权漏洞的克星!用爬虫自动化检测平行越权/垂直越权漏洞
爬虫·安全·自动化
lishutong100617 小时前
基于 Perfetto 与 AI 的 Android 性能自动化诊断方案
android·人工智能·自动化
Digitally17 小时前
荣耀手机数据迁移至 iPhone 教程
智能手机·cocoa·iphone