iOS开发——高级技术&摇一摇功能的实现

时间:2022-09-26 03:16:54

摇一摇功能的实现

在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」来测试「摇一摇」功能。

iOS开发——高级技术&摇一摇功能的实现