iOS开发之摇一摇功能的实现

本文介绍如何在iOS应用中实现摇一摇功能。通过设置控制器支持摇动并成为第一响应者,结合UIResponder中的motionBegan、motionEnded及motionCancelled等方法,可以轻松实现摇一摇交互效果。
在 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 anib.
     [[UIApplicationsharedApplication]setApplicationSupportsShakeToEdit:YES];
[self
becomeFirstResponder];
}
然后去实现那几个方法就可以了
- (void) motionBegan:(UIEventSubtype)motionwithEvent:(UIEvent
*)event
{
     //检测到摇动
}
- (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent*)event
{
     //摇动取消
}

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

{
     //摇动结束
     if(event.subtype == UIEventSubtypeMotionShake) {
         //somethinghappens

     }
}



iPhone对摇一摇有很好的支持,总体说来就两步:首先在试图控制器中打开接受摇一摇的开关然后在摇一摇触发的制定的方法中实现你要实现的功能就好。代码如下:

[objc]  view plain copy
  1. #pragma mark -  
  2. #pragma mark yaoyiyao  
  3. - (BOOL)canBecomeFirstResponder  
  4. {  
  5.     return YES;// default is NO  
  6. }  
  7. - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event  
  8. {  
  9.     NSLog(@"开始摇动手机");  
  10. }  
  11. - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event  
  12. {  
  13.     NSLog(@"stop");  
  14.     UIAlertView *yaoyiyao = [[UIAlertView alloc]initWithTitle:@"温馨提示:" message:@"您摇动了手机,想干嘛?" delegate:self cancelButtonTitle:@"CANCEL" otherButtonTitles: nil nil];  
  15.     [yaoyiyao show];  
  16. }  
  17. - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event  
  18. {  
  19.     NSLog(@"取消");  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值