IOS中实现设备摇动检测

这些方法都是在网上看到的,我自己经过测试的就这2种;

1.UIWindow(已测试)

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

{

}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (motion == UIEventSubtypeMotionShake )
    {
        //这里可以促发系统震动,或者发送一个通知,进行相应的处理
    }
}

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


2. UIViewController(继承自UIResponder - 已测试)

-(BOOL)canBecomeFirstResponder {

    returnself.shakeSyncIsOn;//这里是self拥有的一个变量,通过这个变量来设定知否支持摇动

}

-(void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    if ([selfcanBecomeFirstResponder]==YES)

    {

        NSLog(@"becomeFirstResponder:YES");

   //下面这句代码,不一定非得写到viewDidLoad或者applicationDidFinishLaunch中,这里也可以

        [[UIApplicationsharedApplication] setApplicationSupportsShakeToEdit:YES];

        [selfbecomeFirstResponder];

    }

    else{

        NSLog(@"becomeFirstResponder:NO");

    }

}

- (void)viewWillDisappear:(BOOL)animated {

    [selfresignFirstResponder];

    [super viewWillDisappear:animated];

}

 

#pragma mark - 

#pragma mark - shakeToSync: UIResponder support motion

//开始摇动检测

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

{

    NSLog(@"====== Shake Begins =======");

}

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

{

    NSLog(@"======= Shake Canceled =======");

}

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

{

       if (motion == UIEventSubtypeMotionShake)

      {

           NSLog(@"======== Shake End ========");

    //这里可以添加震动反馈,或者发送一个通知

    //AudioToolBox.framework

     // #import "AudioToolbox/AudioToolbox.h" 

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

      }

}

 

转载于:https://www.cnblogs.com/traximus/archive/2013/02/28/2937009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值