参考网上写个例子,两种方法。
一种在AppDelegate.m中写上
-(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
application.applicationSupportsShakeToEdit=YES;
return YES;
}
然后在需要的.m中写上
-(BOOL)canBecomeFirstResponder
{
return YES;
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[selfbecomeFirstResponder];
}
-(void)viewWillDisappear:(BOOL)animated
{
[selfresignFirstResponder];
[super viewWillDisappear:animated];
}
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
NSLog(@"motionbegan");
if(motion==UIEventSubtypeRemoteControlBeginSeekingBackward)
{
NSLog(@"motionbeginback");
}
else if(motion==UIEventSubtypeRemoteControlBeginSeekingForward)
{
NSLog(@"motion beginforward");
}
}
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion==UIEventSubtypeMotionShake){
NSLog(@"motionshare");
}
}
另一种是利用加速计进行判断,在需要的.h加入UIAccelerometerDelegate协议,.m文件中写下如下代码:
- (void)viewDidLoad
{
[superviewDidLoad];
UIAccelerometer*acce=[UIAccelerometersharedAccelerometer];
acce.delegate=self;
acce.updateInterval=1/120;
}
-(void)accelerometer:(UIAccelerometer*)accelerometerdidAccelerate:(UIAcceleration*)acceleration
{
if (fabsf(acceleration.x)>2.0||fabsf(acceleration.y)>2.0||fabsf(acceleration.z)>2.0) {
NSLog(@"========x==%f==y=%f==z=%f",fabsf(acceleration.x),fabsf(acceleration.y),fabsf(acceleration.z));
}
}