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.pswp.cn/diannao/72217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72217.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

課程《MIT Introduction to Deep Learning》

在Youtubu上,MIT Introduction to Deep Learning (2024) | 6.S191 共8節課: (1) MIT Introduction to Deep Learning (2024) | 6.S191 (2) MIT 6.S191: Recurrent Neural Networks, Transformers, and Attention (3) MIT 6.S191: Convolutional Neural N…

Docker 學習(一)

一、Docker 核心概念 Docker 是一個開源的容器化平臺,允許開發者將應用及其所有依賴(代碼、運行時、系統工具、庫等)打包成一個輕量級、可移植的“容器”,實現 “一次構建,隨處運行”。 1、容器(Container…

007 訂單支付超時自動取消訂單(rabbitmq死信隊列 mybatis)

文章目錄 死信隊列RabbitMQ 配置類 RabbitMQConfig.java生產者 OrderTimeoutProducer.java消費者 OrderTimeoutConsumer.java應用配置 application.ymlpom.xml 依賴實體類 Order.java(不變)Mapper 接口 OrderMapper.java(不變)服務…

計算機畢業設計SpringBoot+Vue.js智慧圖書管理系統(源碼+文檔+PPT+講解)

溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 作者簡介:Java領…

《論數據分片技術及其應用》審題技巧 - 系統架構設計師

論數據分片技術及其應用寫作框架 一、考點概述 本論題“論數據分片技術及其應用”主要考察的是軟件工程中數據分片技術的理解、應用及其實際效果分析。考點涵蓋以下幾個方面: 首先,考生需對數據分片的基本概念有清晰的認識,理解數據分片是…

【每日學點HarmnoyOS Next知識】web加載pdf、Toggle禁用、Grid多次渲染問題、Web判斷是否存在title、 List側滑欄關閉

【每日學點HarmnoyOS Next知識】web加載pdf、Toggle禁用、Grid多次渲染問題、Web判斷是否存在title、 List側滑欄關閉 1、HarmonyOS Web組件加載本地pdf文件后,默認顯示標題和下載按鈕,可以隱藏或者有對應的操作這個title的API嗎? 隱藏PDF操…

下載 MindSpore 配置 PyTorch環境

以下是下載 MindSpore 并配置 PyTorch 環境的詳細步驟,適用于常見的 Linux/Windows 系統(以 NVIDIA GPU 為例): 一、環境準備 1. 硬件與軟件檢查 GPU 支持:確保使用 NVIDIA 顯卡,通過 nvidia-smi 查看驅動…

三、數據提取

利用 requests 可以獲取網站頁面數據,但是 requests 返回的數據中包含了一些冗余數據,我們需要在這些數據集中提取自己需要的信息。所以我們要學會在數據集中提取自己需要的數據。 需要掌握的知識點如下: json 數據提取 jsonpath 語法 靜態…

Qt | 實戰繼承自QObject的IOThread子類實現TCP客戶端(安全銷毀)

點擊上方"藍字"關注我們 01、QThread >>> start() 啟動線程,調用后會執行 run() 方法。 run() 線程的入口點,子類化 QThread 時需要重寫此方法以定義線程的執行邏輯。 quit() 請求線程退出,線程會在事件循環結束后終止。 exit(int returnCode = 0) 退出…

int new_pos = (pos + delta + 9) % 9 化曲為直算法

公式 int new_pos (pos delta 9) % 9; 是一個常見的 循環數組索引計算 方法,用于處理圓圈排列中的位置計算。這個公式可以總結出一個普遍的規律,適用于任何循環數組或圓圈排列的場景。 普遍規律 假設有一個長度為 ( n ) 的循環數組(或圓圈…

生成一個日期時間序列,從‘2024-12-03‘開始,每小時遞增 oracle 轉為達夢

-------------------------------生成一個日期時間序列,從2024-12-03開始,每小時遞增---------------------------- ---原oracle : SELECT to_date(2024-12-03, yyyy-mm-dd) (ROWNUM - 1) / 24 data_time FROM dual CO…

前端學習——HTML

VSCode常用快捷鍵 代碼格式化:ShiftAltF 向上或向下移動一行:AltUp或AltDown 快速復制一行代碼:ShiftAltUp或者ShiftAltDown 快速替換:CtrlH HTML標簽 文本標簽 定義著重文字 定義粗體文字 定義斜體文字 加重語氣 刪除字 無特…

Hadoop之02:MR-圖解

1、不是所有的MR都適合combine 1.1、map端統計出了不同班級的每個學生的年齡 如:(class1, 14)表示class1班的一個學生的年齡是14歲。 第一個map任務: class1 14 class1 15 class1 16 class2 10第二個map任務: class1 16 class2 10 class…

C++核心編程之STL

STL初識:從零開始的奇幻冒險 1 STL的誕生:一場代碼復用的革命 很久很久以前,在編程的世界里,開發者們每天都在重復造輪子。無論是數據結構還是算法,每個人都得從頭開始寫,仿佛在無盡的沙漠中尋找綠洲。直到…

【Python】OpenCV算法使用案例全解

OpenCV算法使用案例全解 前言 OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。從簡單的圖像濾波到復雜的三維重建,OpenCV涵蓋了計算機視覺領域的眾多算…

Redis的持久化-RDBAOF

文章目錄 一、 RDB1. 觸發機制2. 流程說明3. RDB 文件的處理4. RDB 的優缺點 二、AOF1. 使用 AOF2. 命令寫?3. 文件同步4. 重寫機制5 啟動時數據恢復 一、 RDB RDB 持久化是把當前進程數據生成快照保存到硬盤的過程,觸發 RDB 持久化過程分為手動觸發和自動觸發。 …

Python Cookbook-2.29 帶版本號的文件名

任務 如果你想在改寫某文件之前對其做個備份,可以在老文件的名字后面根據慣例加上三個數字的版本號。 解決方案 我們需要編寫一個函數來完成備份工作: def VersionFile(file_spec, vtypecopy):import os,shutilif os.path.isfile(file_spec):#檢查vtype參數if v…

CCF-CSP認證 202104-1灰度直方圖

題目描述 思路 首先輸入矩陣長度、矩陣寬度和灰度范圍&#xff0c;結果數組長度可固定&#xff0c;其中的元素要初始化為0。在輸入灰度值的時候&#xff0c;結果數組中以該灰度值為索引的元素值1&#xff0c;即可統計每個灰度值的數量。 代碼 C版&#xff1a; #include <…

水果識別系統 | BP神經網絡水果識別系統,含GUI界面(Matlab)

使用說明 代碼下載&#xff1a;BP神經網絡水果識別系統&#xff0c;含GUI界面&#xff08;Matlab&#xff09; BP神經網絡水果識別系統 一、引言 1.1、研究背景及意義 在當今科技迅速發展的背景下&#xff0c;人工智能技術尤其是在圖像識別領域的應用日益廣泛。水果識別作為…

如何在網頁上顯示3D CAD PMI

在現代制造業中&#xff0c;3D CAD模型已成為產品設計和制造的核心。為了更有效地傳達設計意圖和制造信息&#xff0c;產品和制造信息&#xff08;PMI&#xff09;被嵌入到3D模型中。然而&#xff0c;如何在網頁上清晰、準確地顯示這些3D CAD PMI&#xff0c;成為了一個重要的技…