摇一摇功能的实现
在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始
在 UIResponder中存在这么一套方法
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
这就是执行摇一摇的方法。那么怎么用这些方法呢?
很简单,你只需要让这个Controller本身支持摇动
同时让他成为第一相应者:
- (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [[UIApplicationsharedApplication] setApplicationSupportsShakeToEdit:YES]; [self becomeFirstResponder]; }
然后去实现那几个方法就可以了
- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { //检测到摇动 } - (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event { //摇动取消 } - (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { //摇动结束 if (event.subtype == UIEventSubtypeMotionShake) { //something happens } }
下面我们开始简单的使用它:
我们只要在控制器里面实现下面代码就可以实现摇一摇功能
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder]; } - (void) viewWillAppear:(BOOL)animated { [self resignFirstResponder]; [super viewWillAppear:animated]; } -(BOOL)canBecomeFirstResponder { return YES; } - (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (motion == UIEventSubtypeMotionShake) { NSLog(@"摇一摇"); } }
另外值得一提的是,在模拟器中运行时,可以通过「Hardware」-「Shake Gesture」来测试「摇一摇」功能。