IOS 5手势识别教程:二指拨动、拖移以及更多手势

IOS 5手势识别教程:二指拨动、拖移以及更多手势,第1张

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!


原文:http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more

IOS 5手势识别教程:二指拨动、拖移以及更多手势

 

Made in iTyran,Powered By Benna, review by iven、子龙山人。


 


 

如果在你的应用程序中需要检测手势,比如点击(tap)、二指拨动 (pinch)、拖移(pan)和旋转(rotation),那么通过创建UIGestureRecognizer类来实现将十分简单。

在本教程中,我们将向你展示如何在你的应用程序里通过简单地编程,添加手势识别,同时在IOS 5中使用故事版(Storyboard)编辑器。

我们将创建一个简单的应用程序,应用里你可以利用手势识别器通过拖动、二指拨动、旋转来移动一只猴子和香蕉。 

我们还将展示如下一些很炫的东西:

  • 添加减速运动
  • 设置手势识别器依赖
  • 添加一个自定义的UIGestureRecognizer,这样你就可以给猴子挠痒痒!J

 

这个教程需要你熟悉IOS 5中ARC和Storyboard的基本概念。如果你刚刚接触这些概念,可以先阅读我们ARC和Storyboard教程。

我想刚刚那只猴子给我们竖起了大拇指,那么现在我们开始吧!J 

Getting Started

 

打开Xcode,建立一个新的项目,点击File->new->new project,选择IOS->Application下的Single View Application应用程序模版。将项目名为“MonkeyPinch”,Device Family选择iPhone,将下面的“Use Storyboard”和“Use Automatic Reference Counting”的选择框打上钩。

首先,下载这个项目的资源并将这4份文件添加到你的项目中。如果你好奇这些,本教程的所有图片均来自我可爱妻子的免费游戏素材包,我们还一起用麦克风制作了音效素材。:P

接下来,打开MainStoryboard.storyboard,拖一个Image View到View Controller。设置image为monkey_1.png,通过Editor->Size to Fit Content,调整Image View大小到图片大小。接着拖第二个Image View进入View Controller,设置图片为object_banababunch.png,同样调整大小。在View Controller中随意放置这两个Image View,你将看到如下图:

 

这是本应用的UI,现在让我们添加手势识别器来拖动这些image view!

UIGestureRecognizer 概述

在我们开始之前,让我们给你一个简要的概述来阐明怎么使用UIGestureRecognizers以及为什么它们非常好用。

在过去没有UIGestureRecognizers的日子里,如果你想检测一个手势,例如滑动(swipe),你必须在一个UIView中对每个touch注册notification,例如touchesBegan,touchesMoves和touchesEnded。每个程序员检测touch的编写稍微有点不同就会导致奇怪的bug和应用上的不一致。

在IOS 3.0,苹果使用了新的UIGestureRecognizer类来解决这个问题!它提供了一个 基本手势(点击tap、二指拨动pinch,旋转rotation,滑动swipe,拖移pan,长按long press)的默认实现。使用他们之后,不仅节省了你一大堆代码,而且能使你的应用工作得更正确!

使用UIGestureRecognizers是非常简单的。你只用完成如下的步骤:

  1. 创建手势识别器。当你创建一个手势识别器,你需要指定一条回调函数,这样当发生手势开始、变化、结束的时候,手势识别器就能传送你的更新。
  2. 将手势识别器添加到视图上。每个手势识别器需要连接一个(并且只能一个)视图。当一个touch发生于一个视图边界(bounds)内,这个手势识别器将会检查此touch事件是否符合该手势预定义的类型,如果找到匹配的,它就会调用回调函数。

你可通过编程完成这两步(我们将迟点在这个教程上说明),但是在Storyboard编辑器里可视化添加一个手势识别器更为简单。那么让我们去看看它是如何工作的并在这个项目中添加我们第一个手势识别器。

UIPanGestureRecognizer

还是打开MainStoryboard.storyboard,在Object Library里找到Pan Gesture Recognizer,并将它拖到猴子这个image view上。这样就创建好了拨动手势识别器,它链接了猴子image view。如果你想确认手势识别器和视图是否已连接,可以通过点击猴子image view,查看Connections Inspector,确定Pan Gesture Recognizer在gestureRecognizers collection:

 

你可能奇怪为什么我们将识别器关联在这个图像视图而不是整个视图。两种方式都可以,只是上述的方法更合适你的项目。当我们将识别器关联到猴子,我们能知道任何在猴子边界内的touch事件,这样我们就能很好地处理。这个方法的缺点是有时候你可能会想使接触扩大到边界之外。这样的情况下,你可以将手势识别器添加到整个视图上,但是你不得不写更多代码确认用户接触在猴子或者香蕉边界内,然后做出相应的处理。

现在我们已经创建了pan(拨动)手势识别器并将它关联到image view,我们只需写回调函数,这样当二指拨动发生时,我们就能做一些实际的事情。

打开ViewCotroller.h,添加如下声明:

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2091354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-07-22
下一篇 2022-07-22

发表评论

登录后才能评论

评论列表(0条)

保存