ios 中响应震动的几种方法

 最近在做微信的摇一摇功能,也算是很小的知识点,整理下,免得忘了:

方法有三:

一.继承自UIWindow(已测试)


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

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (motion == UIEventSubtypeMotionShake )
    {
        // User was shaking the device. Post a notification named "shake".
        [[NSNotificationCenter defaultCenter] postNotificationName:@"shake" object:self];//消息注册
    }
}

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

实现代码后,将window 设为UIResponse


二.(未测试)

首先在App's Delegate中设定applicationSupportsShakeToEdit属性:

- (void)applicationDidFinishLaunching:(UIApplication *)application {

        application.applicationSupportsShakeToEdit = YES;


}

然后在你的View控制器中添加/重载canBecomeFirstResponder, viewDidAppear:以及viewWillDisappear:

-(BOOL)canBecomeFirstResponder {
    return YES;
}

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

- (void)viewWillDisappear:(BOOL)animated {
    [self resignFirstResponder];
    [super viewWillDisappear:animated];
}

最后在你的view控制器中添加motionEnded:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (motion == UIEventSubtypeMotionShake)
    {
        // your code
    }
}

三。直接在所在view中添加(未测试)

同时让他成为第一相应者:

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    [[UIApplicationsharedApplicationsetApplicationSupportsShakeToEdit:YES];

    [selfbecomeFirstResponder];

}

 

然后去实现那几个方法就可以了

四.几个方法的含义

- (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

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值