iOS攔截控制項事件,處理後繼續執行原來的訊息傳遞流程

來源:互聯網
上載者:User

#import
<objc/objc.h>

#import <objc/runtime.h>

- (void)sendEventHooked:(UIEvent *)event {

    

    

    //在這裡做你想做的事情吧

   NSLog(@"截獲事件:%@",
[eventdescription]);

    

    

    

    //執行原來的訊息傳遞流程

    

    [selfperformSelector:@selector(sendEventOriginal:)withObject:event];

    

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions

{

    Method sendEvent =class_getInstanceMethod([UIWindowclass],@selector(sendEvent:));

   Method sendEventMySelf =class_getInstanceMethod([selfclass],
@selector(sendEventHooked:));

   IMP sendEventImp =method_getImplementation(sendEvent);

   class_addMethod([UIWindowclass],@selector(sendEventOriginal:),
sendEventImp,method_getTypeEncoding(sendEvent));

   IMP sendEventMySelfImp =method_getImplementation(sendEventMySelf);

   class_replaceMethod([UIWindowclass],@selector(sendEvent:),
sendEventMySelfImp,method_getTypeEncoding(sendEvent));

    

self.window = [[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]]autorelease];

    // Override point for customization after application launch.

    if ([[UIDevicecurrentDevice]userInterfaceIdiom]
==UIUserInterfaceIdiomPhone) {

        self.viewController = [[[ViewControlleralloc]initWithNibName:@"ViewController_iPhone"bundle:nil]autorelease];

    }else {

        self.viewController = [[[ViewControlleralloc]initWithNibName:@"ViewController_iPad"bundle:nil]autorelease];

    }

    self.window.rootViewController =self.viewController;

    [self.windowmakeKeyAndVisible];

return YES;

}

然後可以在其它地方建立按鈕,就可以截獲到按鈕觸摸事件!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.