摇一摇功能的实现

在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始

在 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 a
 nib.

     [[UIApplicationsharedApplication]
 setApplicationSupportsShakeToEdit:YES];

 [self

 becomeFirstResponder];

 }

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

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

     }

 }

下面我们开始简单的使用它:

 
我们只要在控制器里面实现下面代码就可以实现摇一摇功能
 - (void)viewDidAppear:(BOOL)animated
 {
     [super viewDidAppear:animated];
     [self becomeFirstResponder];
 }
 - (void) viewWillAppear:(BOOL)animated
 {
     [self resignFirstResponder];
     [super viewWillAppear:animated];
 }
 -(BOOL)canBecomeFirstResponder
 {
     return YES;
 }
 - (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
 {

     if (motion == UIEventSubtypeMotionShake) {
         NSLog(@"摇一摇");
     }
 }

另外值得一提的是,在模拟器中运行时,可以通过「Hardware」-「Shake Gesture」来测试「摇一摇」功能。

 
 

iOS开发——高级技术&摇一摇功能的实现的更多相关文章

  1. iOS开发——高级技术&二维码功能的实现

    二维码功能的实现 ZBarSDK,一个比较优秀的开源项目,使用起来也很简单. ZBarSDK是一个开源的SDK,可从这里下载到源码,该SDK实现了识别和读取各种条形码,包括EAN-13/UPC-A, ...

  2. iOS开发——高级技术精选OC篇&Runtime之字典转模型实战

    Runtime之字典转模型实战 如果您还不知道什么是runtime,那么请先看看这几篇文章: http://www.cnblogs.com/iCocos/p/4734687.html http://w ...

  3. iOS开发——高级技术OC篇&运行时(Runtime)机制

    运行时(Runtime)机制 本文将会以笔者个人的小小研究为例总结一下关于iOS开发中运行时的使用和常用方法的介绍,关于跟多运行时相关技术请查看笔者之前写的运行时高级用法及相关语法或者查看响应官方文档 ...

  4. iOS开发——高级技术&广告服务

    广告服务 上 面也提到做iOS开发另一收益来源就是广告,在iOS上有很多广告服务可以集成,使用比较多的就是苹果的iAd.谷歌的Admob,下面简单演示一下如何 使用iAd来集成广告.使用iAd集成广告 ...

  5. iOS开发——高级技术&内购服务

    内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通 ...

  6. iOS开发——高级技术&签名机制

    签名机制 最近看了objc.io上第17期中的文章 <Inside Code Signing> 对应的中文翻译版 <代码签名探析> ,受益颇深,对iOS代码签名机制有了进一步的 ...

  7. iOS开发——高级技术&广告功能的实现

    广告功能的实现 iPhone/iPad的程序,即使是Free的版本,也可以通过广告给我们带来收入.前提是你的程序足够吸引人,有足够的下载量.这里,我将介绍一下程序中集成广告的方法.主要有两种广告iAd ...

  8. iOS开发——高级技术&通讯录功能的实现

    通讯录功能的实现 iOS 提供了对通讯录操作的组建,其中一个是直接操作通讯录,另一个是调用通讯录的 UI 组建.实现方法如下: 添加AddressBook.framework到工程中. 代码实现: 1 ...

  9. iOS开发——高级技术&密码锁功能的实现

    密码锁功能的实现 一个ios手势密码功能实现 ipad/iphone 都可以用 没有使用图片,里面可以通过view自己添加 keychain做的数据持久化,利用苹果官方KeychainItemWrap ...

随机推荐

  1. 生产环境上shell的解读

    一直以来对shell都不是很熟悉,只停留在基本的linux上操作上,这周因为定位问题接触到了生产环境上的脚本,因此作为引子学习一下.很多命令只是点到,等真正需要独立完成的时候再去学习. #!/bin/ ...

  2. SHOI2008小约翰的游戏John

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1139  Solved: 701[Submit][ ...

  3. [swustoj 1088] 德州扑克

    德州扑克(1088) 问题描述 德州扑克是一款风靡全球的扑克游戏.德州扑克一共有52张牌,没有王牌.每个玩家分两张牌作为“底牌”,五张由荷官陆续朝上发出的作为公共牌.开始的时候,每个玩家会有两张面朝下 ...

  4. JXL解析Excel表格内容到数据库

    java中常用的解析Excel表格的工具一种是POI一种是JXL,POI功能强大,相比JXL稍嫌复杂,对表格样式的处理非常好:而JXL解析简单方便,对中文支持比较好. 工作中解析Excel内容上传到数 ...

  5. 在ubuntu14.04上编译android4.2.2系统

    原创作品,转载请注明出处,严禁非法转载             copyright:weishusheng   2015.8.1 时下android系统非常流行,下面就来说一下,下载编译一个andro ...

  6. [转] Android SDK manager 无法获取更新版本列表

      打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...

  7. Java中调用参数是数组的存储过程

    Java中调用参数是数组的存储过程 1. 存储过程以及类型定义如下: --The array in oracle CREATE OR REPLACE TYPE idArray AS TABLE OF ...

  8. Poj 1953 World Cup Noise之解题报告

    World Cup Noise Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 16369   Accepted: 8095 ...

  9. SQL2008R2日志传送需要注意点

    当SQL2008R2采用日志传送方式进行备份/还原时需要注意事项 主从数据库机器必须是局域网内可互相通过共享访问的主机 主从数据库须添加系统帐号,并将sqlagent服务的启动帐号设定为此帐号,最好主 ...

  10. Java持久化存储对象Properties的方法list、store、load

    package FileDemo; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStrea ...