iOS开发——全局响应MotionEvent
来源:互联网 发布:研究所20升级数据 编辑:程序博客网 时间:2024/05/22 17:47
遇到这样一个需求:应用无论处于哪个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{}
解决方法:用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
0 0
- iOS开发——全局响应MotionEvent
- iOS开发——全局响应MotionEvent(微信摇一摇)
- iOS开发UI篇—响应者链条
- iOS开发-----响应链
- Android MotionEvent事件响应机制
- MotionEvent.ACTION_UP无法被响应
- iOS开发——swift实现简单的全局键盘管理器
- 安卓开发——MotionEvent中getAction、getActionMask、getActionIndex区别
- Android开发---MotionEvent(一)
- Android——MotionEvent对象分析
- Android——MotionEvent对象分析
- Android事件机制——-MotionEvent
- Android onTouchEvent的MotionEvent.ACTION_UP不响应
- Android onTouchEvent的MotionEvent.ACTION_UP不响应
- 微信小程序开发—(一)全局配置
- iOS开发——响应链(Responder Chain)的深入理解和代码示例
- iOS开发——响应链(Responder Chain)的深入理解和代码示例
- iOS开发——响应链(Responder Chain)的深入理解和代码示例(二)
- LoadRunner 11安装
- LDD3之并发和竞态-completion(完成量)的学习和验证
- 黑马程序员---Java数组
- vim配置vimrc详解
- LeetCode Distinct Subsequences
- iOS开发——全局响应MotionEvent
- 关于哈希思想的一点简单理解
- 基数排序
- ruby redis的集群管理器
- matlab调用VideoCapture闪退
- 面试笔试整理--------.net方向
- Unix/Linux 那些系统启动后的进程
- make mrproper及mrproper的含义
- android中Camera.PreviewCallback的调用的三个方式