首页 > 代码库 > iOS开发摇动手势实现详解
iOS开发摇动手势实现详解
1.当设备摇动时,系统会算出加速计的值,并告知是否发生了摇动手势。系统只会运动开始和结束时通知你,并不会在运动发生的整个过程中始终向你报告每一次运动。例如,你快速摇动设备三次,那只会收到一个摇动事件。
2,想要实现摇动手势,首先需要使视图控制器成为第一响应者,注意不是单独的控件。成为第一响应者最恰当的时机是在视图出现的时候,而在视图消失的时候释放第一响应者。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -( 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,这些与触摸方法有着相似的工作原理,但没有移动方法。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | - ( 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
我的代码:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | // // 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){ |
?
1 | NSLog (@ "摇动了手机" ); |
?
1 | //创建并初始化对话框 UIAlertView *show=[[UIAlertView alloc] initWithTitle:@"ocq ios 学习" message:@"恭喜,您查找到了好友" delegate:nil cancelButtonTitle:@"添加为好友" otherButtonTitles: nil]; //显示对话框 [show show]; // [show release]; <br>} <br>} <br>@end<br><br> |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。