第一种
1、在AppDelegate.h中进行如下设置:
?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ application.applicationSupportsShakeToEdit = YES;}
?
2、在你需要对晃动事件进行处理的ViewController中添加如下代码:
?
-(BOOL)canBecomeFirstResponder { return YES;}-(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder];}- (void)viewWillDisappear:(BOOL)animated { [self resignFirstResponder]; [super viewWillDisappear:animated];}- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{ if (motion == UIEventSubtypeMotionShake) { NSLog(@"检测到晃动"); }}
?
3、在模拟器中测试晃动,按组合键:Ctrl + Win + Z
?
?
第二种:利用UIAccelerometer加速器来检测
?
- (void)viewDidLoad{ UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer]; accelerometer.delegate = self; accelerometer.undateInterval = 1.0f / 60.0f; }- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceletration *)acceleration{if(fabsf(acceleration.x)>2.0||fabsf(acceleration.y>2.0)||fabsf(acceleration.z)>2.0) { //NSLog(@"检测到晃动"); }}?
?
?
?