1.當設備搖動時,系統會算出加速計的值,並告知是否發生了搖動手勢。系統只會運動開始和結束時通知你,並不會在運動發生的整個過程中始終向你報告每一次運動。例如,你快速搖動設備三次,那只會收到一個搖動事件。
2,想要實現搖動手勢,首先需要使視圖控制器成為第一響應者,注意不是單獨的控件。成為第一響應者最恰當的時機是在視圖出現的時候,而在視圖消失的時候釋放第一響應者。
-(BOOL)canBecomeFirstResponder { return YES; } -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder]; } -(void)viewWillDisappear:(BOOL)animated { [self resignFirstResponder]; [super viewWillDisappear:animated]; }
現在,視圖控制器准備處理運動事件,其中有三個方法,motionBegan,motionEnded和motionCancelled,這些與觸摸方法有着相似的工作原理,但沒有移動方法。
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (event.type == UIEventSubtypeMotionShake) { NSLog(@"Shake Began"); } } -(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (event.type == UIEventSubtypeMotionShake) { NSLog(@"Shake End"); } } -(void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (event.type == UIEventSubtypeMotionShake) { NSLog(@"Shake Cancelled"); } }
以上是轉載自http://blog.csdn.net/marvindev
我的代碼:
// // ocqViewController.m // shake // // Created by ocq on 14-4-29. // Copyright (c) 2014年 ocq. All rights reserved. // #import "ocqViewController.h" @interface ocqViewController () @end @implementation ocqViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"初始化了實例"); // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(BOOL)canBecomeFirstResponder { return YES; } -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder]; } -(void)viewWillDisappear:(BOOL)animated { [self resignFirstResponder]; [super viewWillDisappear:animated]; } ////當手機移動結束時調用該方法 #pragma motion移動的類型 UIEvent事件 - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { //如果是搖手機類型的事件 if(motion==UIEventSubtypeMotionShake){
NSLog(@"搖動了手機");
//創建並初始化對話框 UIAlertView *show=[[UIAlertView alloc] initWithTitle:@"ocq ios 學習" message:@"恭喜,您查找到了好友" delegate:nil cancelButtonTitle:@"添加為好友" otherButtonTitles: nil]; //顯示對話框 [show show]; // [show release];
}
}
@end