摇一摇实现

今天项目需要摇一摇下单!!!!

之前没做过,度娘了一下,大致分为三种

1.系统原生的

[[UIApplication sharedApplication] setApplicationSupportsShakeToEdit:YES];  

这句话应该是放在Appdelegaet里面的,不过放在需要用到的控制器里也可以

[self becomeFirstResponder];

这句让当前控制器成为第一响应者...

[self resignFirstResponder].

对应的 在viewDidDisappear方法里面取消第一响应


- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event

{

    if (motion == UIEventSubtypeMotionShake)

    {

//开始摇一摇

  }}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event

{

    //结束摇一摇功能

}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

{

    //摇动结束

    if (event.subtype == UIEventSubtypeMotionShake)

    {

        // 振动效果 需要#import <AudioToolbox/AudioToolbox.h>

        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

    }

}

//***********************以上是系统的,表示很方便,但是听说容易在裤兜里也在摇,就放弃了~~~~~(没测试过)***********//

2.使用陀螺仪检测

UIAccelerometer 

UIAccelerometer * accelerometer = [UIAccelerometer sharedAccelerometer];

    accelerometer.delegate = self;

    accelerometer.updateInterval = 0.1;//检测频率

    _accelerometer = accelerometer;//自己创建一个

//实现代理方法

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration

{

    //综合3个方向的加速度 sqrt(平方根函数),pow(指数函数x的y次)

    double accelerameter = sqrt( pow( acceleration.x , 2 ) + pow( acceleration.y , 2 )

                                + pow( acceleration.z , 2) );

    //当综合加速度大于2.3时,就激活效果(数据越小,用户摇动的动作就越小,越容易激活)

    if (accelerameter>2.3) {

//里面写触发事件

    }

//****************太老了,建议不要使用**************//

3.CoreMotionManager  

一个比较全面的陀螺仪数据监测工具,可以检测加速度,引力加速度等比较完善的检测工具。

//使用前需要导入 CoreMotion.framework   (不晓得如何导入库???--->度娘)

其余的去看demo

推荐阅读更多精彩内容