• 抓取第三方广告弹窗里的控件事件-測试成功



    因为应用里面加入了弹窗的广告。可是为.a的库文件,出于好奇想抓取弹窗广告内的控件事件,于是写了例如以下代码測试。成功!



     for (id obj in [[[UIApplication sharedApplication] keyWindow] subviews])

        {

            NSLog(@"Class Name[%s]", object_getClassName(obj));

            

            NSString * str = [NSString stringWithFormat:@"%s",object_getClassName(obj)];

        

            if([str isEqualToString:@"UIView"])

            {

                for (UIView * vv in [(UIView *)obj subviews])

                {

                    NSLog(@"UIView = %@",vv);

                    

                    for (UIView * hh in vv.subviews)

                    {

                        NSLog(@"UIView的子View = %@",hh);

      //通过打印hh得知所要获取的控件有tag值。于是依据tag值抓到相应的控件

                        if(hh.tag == 1)

                        {

                            UIButton * btn = (UIButton *)hh;

                            

                            NSSet* myActions = [btn allTargets];

                                                 

                            NSEnumerator * mm = [myActions objectEnumerator];

                            

                            for (NSString * ss in mm)

                            {

                                NSLog(@"遍历枚举的值: %@",ss);

                                

                                NSArray * array = [btn actionsForTarget:ss forControlEvent:UIControlEventTouchUpInside];

                                

                                SEL sel = NSSelectorFromString(array[0]);

                                //sel 则为要抓取的控件事件

                                [ss performSelector:sel];

                                


                            }

                            

                        }

                        

                    }

                

                }

        

            }

            

        }


  • 相关阅读:
    sqlite3获取所有表信息
    top高级技能
    python xlwt写excel格式控制 颜色、模式、编码、背景色
    python操作Excel的几种方式
    eclispe: 修改所有文件默认编码为UTF-8
    Fragment: 使用newInstance()来实例化fragment(转)
    Java: 线程池(ThreadPoolExecutor)中的参数说明
    android : 解决android无法使用sun.misc.BASE64Encoder sun.misc.BASE64Decoder 的问题, 无需添加rt.jar
    蓝牙BLE: ATT协议层中属性(Attribute)
    蓝牙BLE: ATT和GATT的概念
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5207069.html
Copyright © 2020-2023  润新知