美文网首页
摇一摇实现

摇一摇实现

作者: 没毛毛的大腿 | 来源:发表于2019-03-25 14:15 被阅读0次

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

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

    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

    相关文章

      网友评论

          本文标题:摇一摇实现

          本文链接:https://www.haomeiwen.com/subject/cbpvvqtx.html