`

UIPanGestureRecognizer学习笔记

 
阅读更多

好久没来写笔记了,原因很简单,最近一直坐java网站,没顾上学IOS(偷懒没学..)

废话少说 开始笔记

UIGestureRecognizer是一个定义基本手势的抽象类,具体什么手势,在以下子类中包含:

    1、拍击UITapGestureRecognizer (任意次数的拍击)  
    2、向里或向外捏UIPinchGestureRecognizer (用于缩放)  
    3、摇动或者拖拽UIPanGestureRecognizer (拖动) 
    4、擦碰UISwipeGestureRecognizer (以任意方向)  
    5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
    6、长按UILongPressGestureRecognizer (长按)

今天一同学问到UIPanGestureRecognizer类中translationInView方法和velocityInView方法有什么区别,因为我也好久没看IOS,一丢下就很难拾起,故今天研究下这个问题

UIPanGestureRecognizer主要用于拖动,比如桌面上有一张图片uiimageview,你想让它由原始位置拖到任何一个位置,就是图片跟着你的手指走动,那么就需要用到该类了。

以下代码表示给一个图片视图指定一个UIPanGestureRecognizer手势当该图片捕获到用户的拖动手势时会调用回调函数handlePan

 

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [self.imgView setUserInteractionEnabled:YES];
    [self.imgView addGestureRecognizer:pan];
    [pan release];

 handlePan函数代码如下:

 

- (void) handlePan: (UIPanGestureRecognizer *)rec{
    NSLog(@"xxoo---xxoo---xxoo");      
    CGPoint point = [rec translationInView:self.view];
    NSLog(@"%f,%f",point.x,point.y);
    rec.view.center = CGPointMake(rec.view.center.x + point.x, rec.view.center.y + point.y);
    [rec setTranslation:CGPointMake(0, 0) inView:self.view];
}

 以下为本人自己的理解,有不到之处请看官务必指教12


- (CGPoint)translationInView:(UIView *)view方法的API解释如下:


The translation of the pan gesture in the coordinate system of the specified view.


Return Value

A point identifying the new location of a view in the coordinate system of its designated superview.

字面理解是:

在指定的视图坐标系统中转换(拖动?) pan gesture

返回参数:返回一个明确的新的坐标位置,在指定的父视图坐标系统中

简单的理解就是

该方法返回在横坐标上、纵坐标上拖动了多少像素

因为拖动起来一直是在递增,所以每次都要用setTranslation:方法制0这样才不至于不受控制般滑动出视图

 

- (CGPoint)velocityInView:(UIView *)view方法的API解释如下:


The velocity of the pan gesture in the coordinate system of the specified view.


Return Value

The velocity of the pan gesture, which is expressed in points per second. The velocity is broken into horizontal and vertical components.

字面理解:

在指定坐标系统中pan gesture拖动的速度

返回参数:返回这种速度

简单的理解就是

你拖动这个图片的时候肯定有个速度,因此返回值就是你拖动时X和Y轴上的速度,速度是矢量,有方向。

 

参考资料

http://www.cnblogs.com/andyque/archive/2011/12/30/2307060.html

分享到:
评论
1 楼 jimode2013 2013-06-18  
thanks

相关推荐

    ios手势资料

    9. **学习资源**:如"iphone的手势与触摸编程学习笔记"和"30天精通iPhone手机编程"等资料,可以帮助开发者深入理解iOS手势编程,提供实例教程和实践指导。 通过这些知识点的学习和实践,开发者能够构建出更加丰富和...

    ios手势相关资料

    8. **学习资源**: 从文件名可以看出,有一些学习资源如博客文章和教程可以帮助开发者深入理解iOS手势编程,包括张智清的“iphone的手势与触摸编程学习笔记”以及CSDN和DEVDIV上的相关博客文章。 通过掌握以上知识点...

    ios-第三方库ContextMenu使用笔记.zip

    在iOS开发中,为了增强用户体验,开发者经常需要添加一些自定义的...通过学习和实践`ContextMenuDemo-master`中的示例代码,开发者可以快速掌握`ContextMenu`库的使用,并将其应用到自己的项目中,提升应用的交互体验。

    iphone抽屉效果源码

    2.手势识别:通过`UIPanGestureRecognizer`监听用户的滑动手势,根据滑动的方向和距离决定抽屉是否应该打开或关闭。 3. 视图布局:为了实现抽屉效果,可能需要使用`Auto Layout`或者`SnapKit`等布局库来动态调整...

    IOS应用源码之记事本界面 .rar

    另外,Core Data是苹果提供的一个强大的对象图形管理框架,可以用来处理更复杂的数据模型,但它的学习曲线较陡峭。 事件处理和用户交互是iOS应用的重要组成部分。点击事件、滑动事件等通常由手势识别器...

    ios应用源码之手写画图 2018128

    在iOS应用开发中,手写画图功能是一个常见的需求,比如在笔记应用、教育软件或者设计工具中。这篇源码提供了实现这一功能的基础框架。本文将深入探讨如何利用iOS的UIKit框架来创建一个手写画图的应用,并关注以下几...

    IOS应用源码——手写画图.zip

    在iOS平台上,开发一款手写画图的应用是一个常见的任务,尤其对于那些想要创建教育、创意设计或个人笔记类应用的开发者来说。这个“手写画图”应用的源码提供了一个很好的起点,让我们来深入探讨其中涉及的关键知识...

    iOS-UI-Note:UI笔记

    UIGestureRecognizer如UIPanGestureRecognizer、UITapGestureRecognizer等,可以响应用户的滑动、点击等操作。例如,添加一个单击手势识别器: ```objc UITapGestureRecognizer *tapGesture = [...

    IOS应用源码——PageCurl for iOS.rar

    4. **README或Documentation**:提供关于如何编译、运行和理解代码的说明,可能包括开发者笔记、使用指南和示例。 5. **Podfile或Carthage**:如果是使用CocoaPods或Carthage进行依赖管理,这些文件会列出项目的...

    触摸手势识别

    4. 笔记应用:在手写笔记应用中,手势可以用于擦除、选择、复制文本。 5. 智能家居:在智能家居系统中,手势识别可用于控制灯光、电器等设备。 五、优化与挑战 1. 误识别:手势识别算法需要不断优化,以减少误...

    ios-文本提示框.zip

    AlertView通常包含了标题、消息文本以及一个或多个操作按钮,但在这个案例中,它扩展了功能,允许用户直接在AlertView内部进行手写输入,提高了用户体验,尤其是对于需要手写签名或笔记的情况。 这个项目可能包含了...

    相机和画板代码完整版本.7z

    在iOS开发领域,相机和画板是两个非常关键的功能组件,它们为用户...在学习和使用这些代码时,开发者应深入理解AVFoundation和UIKit框架,熟悉相关API的使用,同时关注用户体验和性能优化,以创建出高效且易用的应用。

    手写画图绘图源码_ios源码

    在iOS应用开发中,特别是在教育、设计、笔记类应用中,手写画图功能非常常见,能够提供用户直观、自然的输入体验。 在iOS平台上,实现手写画图的核心技术是基于Core Graphics框架。Core Graphics是苹果操作系统内核...

    【应用】-iPad Multi-Touch.7z

    在iOS开发中,开发者可以自定义手势识别器(如UIPinchGestureRecognizer、UIPanGestureRecognizer等)来扩展系统默认的手势,或者通过重写视图的 touchesBegan:withEvent:、touchesMoved:withEvent:、touchesEnded:...

    iphone手势识别和手绘图线

    手绘图线(Hand-drawn Line Drawing)功能则是在应用中让用户能够自由地在屏幕上绘制图形或线条,常见于绘画应用、笔记应用或某些游戏。这种功能通常依赖于UIKit框架中的Core Graphics库,它提供了低级别的绘图API,...

    DrawTransformer绘图源码_ios源码

    1. 触摸事件处理:通过UIPanGestureRecognizer、UIPinchGestureRecognizer等手势识别器捕获用户触摸事件,根据手势类型执行相应的绘图或图形变换操作。 2. 绘图路径构建:在CGContext上使用CGPath添加路径,结合...

    swift-JLStickerTextViewiOS实现在图片上添加文字支持旋转平移缩放

    在iOS应用开发中,我们经常需要实现用户在图片上添加文字并进行编辑的功能,比如在社交媒体分享、笔记应用或者照片编辑应用中。`swift-JLStickerTextViewiOS实现在图片上添加文字支持旋转平移缩放`这个项目,就是...

    识别Leopard和Lion中的两指和三指滚动和滑动手势_Objective-C_下载.zip

    - **UIPanGestureRecognizer**:虽然主要用于iOS,但在OS X中也可以使用,它可以识别平移手势,适用于更复杂的滚动和滑动场景。 四、代码实现 在`CocoaNavigationGestures-master`项目中,你可能会找到如下代码片段...

    chukwuyenum.dennis-iOS-week-one

    这个压缩包可能包含了Dennis Chukwuyenum第一周学习iOS开发的笔记、代码示例和其他相关资源。 首先,Swift的特点在于它的易读性,语法简洁明了,这使得新开发者能够快速上手。它摒弃了C家族语言的一些复杂特性,如...

Global site tag (gtag.js) - Google Analytics