标签:class blog code com 2014 os
遇到这样一个需求:应用无论处于哪个view controller,摇动手机,都能够出发某一方法。
能够想到的思路就是用苹果封装好的“MotionEvent”,但是如果简单的把一下代码加到某一view controller中,那么只有在该view controller展示在前端时,摇动手机才会出发方法。
- (BOOL)canBecomeFirstResponder {//默认是NO,所以得重写此方法,设成YES return YES; } 然后实现下列方法://很像TouchEvent事件 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { } - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { NSLog(@"shake"); } - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event { }
UIWindow+.h
#import <UIKit/UIKit.h> #define UIEventSubtypeMotionShakeNotification @"UIEventSubtypeMotionShakeNotification" @interface UIWindow (Motion) // @override - (BOOL)canBecomeFirstResponder; - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event; @end
#import "UIWindow+.h" @implementation UIWindow (Motion) - (BOOL)canBecomeFirstResponder {//默认是NO,所以得重写此方法,设成YES return YES; } 然后实现下列方法://很像TouchEvent事件 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { } - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { NSLog(@"shake"); } - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event { } @end
iOS开发——全局响应MotionEvent,布布扣,bubuko.com
标签:class blog code com 2014 os
原文地址:http://blog.csdn.net/yuanbohx/article/details/34898927