iOS开发——高级技术&摇一摇功能的实现

摇一摇功能的实现

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

在 UIResponder中存在这么一套方法

1  - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
2
3  - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
4  - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

这就是执行摇一摇的方法。那么怎么用这些方法呢?

很简单,你只需要让这个Controller本身支持摇动

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

 1 - (void)viewDidLoad
 2
 3
 4 {
 5
 6
 7     [superviewDidLoad];
 8
 9
10 // Do any additional setup after loading the view, typically from a
11 nib.
12
13
14     [[UIApplicationsharedApplication]
15 setApplicationSupportsShakeToEdit:YES];
16
17
18 [self
19
20
21 becomeFirstResponder];
22
23
24 }

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

 1 - (void) motionBegan:(UIEventSubtype)motion
 2 withEvent:(UIEvent
 3
 4
 5 *)event
 6
 7
 8 {
 9
10
11     //检测到摇动
12
13
14 }
15
16
17 - (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent
18 *)event
19
20
21 {
22
23
24     //摇动取消
25
26
27 }
28
29
30
31 - (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent
32 *)event
33
34
35
36 {
37
38
39     //摇动结束
40
41
42     if
43 (event.subtype == UIEventSubtypeMotionShake) {
44
45
46         //something
47 happens
48
49
50
51     }
52
53
54 }

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

我们只要在控制器里面实现下面代码就可以实现摇一摇功能

 1 - (void)viewDidAppear:(BOOL)animated
 2 {
 3     [super viewDidAppear:animated];
 4     [self becomeFirstResponder];
 5 }
 6 - (void) viewWillAppear:(BOOL)animated
 7 {
 8     [self resignFirstResponder];
 9     [super viewWillAppear:animated];
10 }
11 -(BOOL)canBecomeFirstResponder
12 {
13     return YES;
14 }
15 - (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
16 {
17
18     if (motion == UIEventSubtypeMotionShake) {
19         NSLog(@"摇一摇");
20     }
21 }

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

时间: 2024-10-22 14:31:54

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

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

Runtime之字典转模型实战 如果您还不知道什么是runtime,那么请先看看这几篇文章: http://www.cnblogs.com/iCocos/p/4734687.html http://www.cnblogs.com/iCocos/p/4676679.html http://www.cnblogs.com/iCocos/p/4725527.html 关于runtime的详细介绍及其相关的小实例 好了,这里就不多废话了,直接开干! 先来看看怎么使用Runtime给模型类赋值 iOS开发

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

运行时(Runtime)机制 本文将会以笔者个人的小小研究为例总结一下关于iOS开发中运行时的使用和常用方法的介绍,关于跟多运行时相关技术请查看笔者之前写的运行时高级用法及相关语法或者查看响应官方文档. 下面就来看看什么是运行时,我们要怎么在iOS开发中去使用它. 官方介绍: 这里我们主要关注的是最后一种! 下面来看看Runtime的相关总结 #pragma mark 获取属性成员 /********************************************************

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

签名机制 最近看了objc.io上第17期中的文章 <Inside Code Signing> 对应的中文翻译版 <代码签名探析> ,受益颇深,对iOS代码签名机制有了进一步的认识.想了解详细内容建议大家还是去看原文好了. 下面是对此文章的理解再结合自己之前对该部分的认识写出的学习笔记.本文的前提是已经对非对称加密有了一定的了解. 一.数字签名(digital signature) 对指定信息使用哈希算法,得到一个固定长度的信息摘要,然后再使用 私钥 (注意必须是私钥)对该摘要加密

iOS开发——高级技术&amp;广告服务

广告服务 上 面也提到做iOS开发另一收益来源就是广告,在iOS上有很多广告服务可以集成,使用比较多的就是苹果的iAd.谷歌的Admob,下面简单演示一下如何 使用iAd来集成广告.使用iAd集成广告的过程比较简单,首先引入iAd.framework框架,然后创建ADBannerView来展示广告,通常 会设置ADBannerView的代理方法来监听广告点击并在广告加载失败时隐藏广告展示控件.下面的代码简单的演示了这个过程: 1 // 2 // ViewController.m 3 // kct

iOS开发——高级技术&amp;内购服务

内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通常软件本身是不收费的,但是要获得某些特权就 必须购买一些道具,而内购的过程是由苹果官方统一来管理的,所以和Game Center一样,在开发内购程序之前要做一些准备工作(下面的准备工作主要是针对真机的,模拟器省略Provisioning Profile配置过程): 前四步和Game Center基本

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

广告功能的实现 iPhone/iPad的程序,即使是Free的版本,也可以通过广告给我们带来收入.前提是你的程序足够吸引人,有足够的下载量.这里,我将介绍一下程序中集成广告的方法.主要有两种广告iAd和AdMob.(还有其他多种可被植入的广告SDK,这里就不都一一介绍了)一:iAd  从iOS 4开始,Apple增加了叫做 iAd 的架构,通过它我们可以在程序中提供Apple的广告服务.Apple会支付给开发者60%的广告收入.iAd Framework中有例程,我们可以下载学习.这里,把简单的

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

密码锁功能的实现 一个ios手势密码功能实现 ipad/iphone 都可以用 没有使用图片,里面可以通过view自己添加 keychain做的数据持久化,利用苹果官方KeychainItemWrapper类 keychain存储的数据不会因为删除app而清除记录,请调用-(void)clear清除储存密码. 简单使用方式 下载后直接把 GesturePassword 下的GesturePassword文件丢到项目中去 在 TARGETS - Build Phases - "KeychainIt

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

通讯录功能的实现 iOS 提供了对通讯录操作的组建,其中一个是直接操作通讯录,另一个是调用通讯录的 UI 组建.实现方法如下: 添加AddressBook.framework到工程中. 代码实现: 1 -(IBAction)onClickbutton:(id)sender 2 { 3 NSMutableArray* personArray = [[[NSMutableArray alloc] init] autorelease]; 4 ABAddressBookRef addressBook =

iOS开发——高级技术&amp;蓝牙服务

蓝牙服务 蓝牙 随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,如今的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大降低.从iOS的发展史也不难看 出苹果目前对蓝牙技术也是越来越关注,例如苹果于2013年9月发布的iOS7就配备了iBeacon技术,这项技术完全基于蓝牙传输.但是众所周知苹果 的设备对于权限要求也是比较高的,因此在iOS中并不能像Android一样随意使用蓝牙进行文件传输(除非你已经越狱).在iOS中进行蓝牙传输