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

企业网站建设作品分析2023年的新闻十条

企业网站建设作品分析,2023年的新闻十条,织梦免费模板dede源码,wordpress标签订阅项目中很多情况下视图的点击点是通过UITapGestureRecognizer 来实现的,这个时候我们就也是可以支持自动化埋点的 思路如下: 通过运行时hook UITapgestureRecognizer的addTarget:action: 方法 和initWithTarget:action: 方法,在交换的方法中添…

项目中很多情况下视图的点击点是通过UITapGestureRecognizer 来实现的,这个时候我们就也是可以支持自动化埋点的
思路如下:
通过运行时hook UITapgestureRecognizer的addTarget:action: 方法
和initWithTarget:action: 方法,在交换的方法中添加埋点的响应方法,
并保留原始的响应方法,在埋点响应方法中执行埋点方法,然后调用原来的响应

直接上代码,

@interface UIGestureRecognizer (Event)@property (nonatomic, strong) NSString *actionName;#pragma mark - Private@property (nonatomic, strong) NSString *senderAction;@end
//
//  UIGestureRecognizer+Event.m
//  TEXT
//
//  Created by mac on 2025/3/2.
//  Copyright © 2025 刘博. All rights reserved.
//#import "UIGestureRecognizer+Event.h"
#import "NSObject+Swizzle.h"static const void *monitorActionNameKey = "monitorActionNameKey";
static const void *KSenderAction = "KSenderAction";static const char *KTargetActionPair = "KTargetActionPair";@implementation  UIGestureRecognizer (Event)+ (void)load
{[NSObject exchangeInstanceMethod:[self class] originalSel:@selector(addTarget:action:) swizzledSel:@selector(log_addTarget:action:)];[NSObject exchangeInstanceMethod:[self class] originalSel:@selector(initWithTarget:action:) swizzledSel:@selector(initWithLogTarget:action:)];
}- (void)log_addTarget:(id)target action:(SEL)action
{//只记录点击事件if ([self isKindOfClass:[UITapGestureRecognizer class]]) {// 原因:UIWebView init时,系统API内部触发UIKit`-[UIWebBrowserView installGestureRecognizers]:// 过滤部分系统私有手势NSString *targetClsStr = NSStringFromClass([target class]);NSString *gesClsStr = NSStringFromClass([self class]);if(target && ( [targetClsStr hasPrefix:@"UIWeb"] || [gesClsStr hasPrefix:@"_UI"] || [gesClsStr hasPrefix:@"WKSynthetic"] || [gesClsStr hasPrefix:@"UIKB"])){[self log_addTarget:target action:action];return;}NSMapTable *targetActions = [self targetActionPair];if (targetActions == nil ) {targetActions = [NSMapTable mapTableWithKeyOptions:NSPointerFunctionsStrongMemoryvalueOptions:NSPointerFunctionsWeakMemory];[self setTargetActionPair:targetActions];}[targetActions setObject:target forKey:NSStringFromSelector(action)];[self log_addTarget:self action:@selector(logAction:)];//先记录action[self setSenderAction:NSStringFromSelector(action)];}else{[self log_addTarget:target action:action];}
}- (void)logAction:(UIGestureRecognizer *) sender
{UIView *view = self.view;//执行埋点操作NSLog(@"哈哈哈手势点击埋点了手势点击埋点了手势点击埋点了");[self callOriginActions];
}- (void)callOriginActions
{NSMapTable *targetActions = [[self targetActionPair] copy];NSEnumerator *enumerator = [targetActions keyEnumerator];id selector;while ((selector = [enumerator nextObject])) {id target = [targetActions objectForKey:selector];if (target != nil) {SEL s = NSSelectorFromString(selector);IMP imp = [target methodForSelector:s];void (*func)(id, SEL,id) = (void *)imp;func(target, s, self);}}
}- (id)initWithLogTarget:(id)target action:(SEL)action
{self = [self initWithLogTarget:nil action:NULL];if (self) {[self addTarget:target action:action];}return self;
}- (NSString *)actionName {return objc_getAssociatedObject(self, monitorActionNameKey);
}- (void)setActionName:(NSString *)monitorActionName{objc_setAssociatedObject(self, monitorActionNameKey,monitorActionName,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}- (NSString *)senderAction {return objc_getAssociatedObject(self, KSenderAction);
}- (void)setSenderAction:(NSString *)senderAction{objc_setAssociatedObject(self, KSenderAction,senderAction,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}-(void)setTargetActionPair:(NSMapTable *)targetActionPair
{objc_setAssociatedObject(self, KTargetActionPair, targetActionPair, OBJC_ASSOCIATION_RETAIN);
}-(NSMapTable*)targetActionPair
{return objc_getAssociatedObject(self, KTargetActionPair);
}@end
http://www.dtcms.com/wzjs/15266.html

相关文章:

  • jtbc网站内容管理系统搜索引擎成功案例分析
  • 公众号与网站网站引流推广软件
  • 太原网站建设工作室新野seo公司
  • 做网站容易还是做小程序容易百度精准推广
  • 合适做服装的国际网站广州seo技术外包公司
  • 网站建设需要什么技术湖南关键词优化推荐
  • 佟年帮韩商言做网站是第几集优化关键词的方法
  • 石嘴山网站建设公司如何做好一个营销方案
  • 如何使用好单库选品库做网站自助网站建设平台
  • 单页营销网站怎么做app拉新推广赚佣金
  • 网站策划名词解释暴风seo论坛
  • 怎么做刷钻网站软文撰写案例
  • 大学网站开发实验室建设方案百度竞价排名榜
  • 泰安网站建设推广自己的网站
  • 什么软件 做短视频网站沈阳百度快照优化公司
  • 佛山网站建设服务公司新华传媒b2b商务平台
  • 建设网站注意免费网络营销推广软件
  • 网门app下载网站关键词优化排名推荐
  • 四川高速公路建设开发总公司网站湘潭网站制作
  • 网站免费推广的方法深圳推广公司哪家正规
  • 仿公众号网站软文推广怎么做
  • 贵港网站推广本地免费发布信息网站
  • 国外网站的正规黄站百度霸屏培训
  • 电子商务网站建设的开发背景怎么引流到微信呢
  • 网站主页调用株洲seo
  • 武汉网站建设的公司百度广告联盟
  • 手机页面网站模板怎么卖凡科网免费建站
  • 网站建设如何插入文字编辑器seo翻译
  • 做APP好还是建设网站好免费使用seo软件
  • 朝阳 手机网站 建设网络营销是干什么的