当前位置: 首页 > news >正文

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
http://www.dtcms.com/a/47058.html

相关文章:

  • 计算机毕业设计SpringBoot+Vue.js相亲网站(源码+文档+PPT+讲解)
  • Unity中动态切换光照贴图LightProbe的方法
  • C++实现3D(EasyX)详细教程
  • DeepSeek蒸馏TinyLSTM实操指南
  • deepseek使用记录18——文化基因之文化融合
  • 数据结构(初阶)(六)----队列
  • Linux NAT和代理服务器
  • 【开源免费】基于SpringBoot+Vue.JS周边游平台系统(JAVA毕业设计)
  • 0x05 部门功能开发日志技术
  • 图漾PercipioIPTool软件使用
  • python基于后门的神经网络模型水印通用方法
  • AndroidStudio下载旧版本方法
  • miqiu的分布式锁(四):MySQL悲观锁解析
  • 线程控制(创建、终止、等待、分离)
  • 定位需要优化的SQL ,及如何优化SQL
  • 深入xtquant:掌握市场基础信息的获取技巧
  • React 第二十七节 <StrictMode> 的使用方法及注意事项
  • Unity XR-XR Interaction Toolkit开发使用方法(十三)组件介绍(XR Grab Interactable)
  • 开源项目Wren AI 文本到SQL解决方案详解
  • 电池管理系统(BMS)架构详细解析:原理与器件选型指南
  • 力扣785. 判断二分图
  • 在AIStudio飞桨星河社区一键部署DeepSeek-r1:70b模型
  • leetcode第216题组合总和Ⅲ
  • 在笔记本电脑上用DeepSeek搭建个人知识库
  • 类似ComfyUI和Midjourney这样的文生图图生图应用的API与服务架构该怎么设计
  • linux shell脚本网络篇
  • LabVIEW正弦信号处理:FFT与最小二乘拟合的参数提取
  • 关于JavaScript性能问题的误解
  • Kotlin 运算符重载
  • Python 爬虫 – BeautifulSoup