iOS开发——全局响应MotionEvent(微信摇一摇)
2015-04-03 16:18
295 查看
遇到这样一个需求:应用无论处于哪个view controller,摇动手机,都能够出发某一方法。
能够想到的思路就是用苹果封装好的“MotionEvent”,但是如果简单的把一下代码加到某一view controller中,那么只有在该view controller展示在前端时,摇动手机才会出发方法。
解决方法:用Category扩展UIWindow,代码如下:
UIWindow+.h
UIWindow+.m
播放音效:
能够想到的思路就是用苹果封装好的“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 { }
解决方法:用Category扩展UIWindow,代码如下:
UIWindow+.h
#import <UIKit/UIKit.h> #define UIEventSubtypeMotionShakeNotification @"UIEventSubtypeMotionShakeNotification" @interface UIWindow (Motion) // @override - (BOOL)canBecomeFirstResponder; - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event; @end
UIWindow+.m
#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
播放音效:
SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:@"glass" ofType:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID); AudioServicesPlaySystemSound (soundID);
相关文章推荐
- iOS开发——全局响应MotionEvent
- ios开发中使用storyboard关于touch的event的响应
- 【iOS-cocos2d-X 游戏开发之十五】Cocos2dx中响应Android的Back与Menu&释放粒子内存
- ArcGIS for iOS 开发系列(5) – 基础篇-手势和事件响应
- 关于MotionEvent.ACTION_UP无法被响应的问题
- IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
- ios开发使用extern访问全局变量
- IOS开发之──事件响应
- iOS避免使用手势不响应touch event的方法
- ios开发中,比较实用的全局宏定义分享
- iOS开发笔记--声明全局变量
- ios开发中,比较实用的全局宏定义分享
- ios开发之网络编程(请求--响应)
- iOS开发那些事-响应内存警告
- iOS开发那些事-响应内存警告
- 同时响应iOS开发中UIPanGestureRecognizer跟UITableView的拖动事件的解决方法
- COCOS2d中添加UIButton不响应触摸事件---iOS开发之最灵异事件之2
- ios开发_关于UIButton点击没有响应问题的阐述
- iOS Safari/WebKit对DeviceMotionEvent的实现
- ios开发(二十四)事件响应