UITouch UIGestureRecognizer

1:本次 touch 坐标

CGPoint point = [[touches anyObject] locationInView:self];     

2:上次 touch 坐标

CGPoint prevPoint = [[touches anyObject] previousLocationInView:self];

3:利用 UIPinchGestureRecognizer 实现 View 通过 Transform 缩小放大.

第一步:注册手势捏合识别器

UIPinchGestureRecognizer *pinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(doPinch:)] autorelease];
[self addGestureRecognizer:pinch];

第二步:实现doPinch 方法

#pragma mark - UIPinchGestureRecognizer
- (void)doPinch:(UIPinchGestureRecognizer *)pinch
{
    CGAffineTransform newTransform = CGAffineTransformScale(self.transform, pinch.scale, pinch.scale);
    [self setTransform:newTransform];
    [pinch setScale:1];
}

4: UIGestureRecognizer 手势优先级调整(摘自:IOS开发之手势——UIGestureRecognizer
共存
)

// 关键在这一行,如果双击确定偵測失败才會触发单击
[singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];

5:  UIGestureRecognizer 在成功触发事件以后,会有一个 状态来标识手势的实际触发情况,比如什么时候开始的,什么时候结束的 等

if (longGesture.state == UIGestureRecognizerStateBegan)

6:iOS 提供 6种系统级的手势供开发人员使用

1:UITapGestureRecognizer  Tap(点一下)

2:UIPinchGestureRecognizer Pinch(二指往內或往外拨动)

3:UIRotationGestureRecognizer Rotation(旋转)

4:UISwipeGestureRecognizer Swipe(滑动,快速移动)

5:UIPanGestureRecognizer Pan (拖移,慢速移动)

6:UILongPressGestureRecognizer LongPress(长按)

1:长按3秒后触发事件

longPressGR.minimumPressDuration = 3;

触发后:会调度两次所设定的方法,传入两个状态:

Begin  :成功按住那么久时触发

End :松手时触发

7:IOS6之前让UITapGestureRecognizer 和 UIButton 事件共存(iOS6以后默认支持)

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 过滤掉UIButton,也可以是其他类型
    if ([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }
    return YES;
}

注:如果在iOS6 想让TapGesture的action先执行,需要把cancelsTouchesInView设置成NO.

8:通过平移和速率来实现手势移动的视图交互

CGPoint velocity = [panGestureRecognizer velocityInView:controlPanelWindow];//速率
CGPoint translation = [panGestureRecognizer translationInView:controlPanelWindow];//平移
时间: 2024-12-30 17:11:19

UITouch UIGestureRecognizer的相关文章

iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用

iOS开发中的手势体系--UIGestureRecognizer分析及其子类的使用 一.引言         在iOS系统中,手势是进行用户交互的重要方式,通过UIGestureRecognizer类,我们可以轻松的创建出各种手势应用于app中.关于UIGestureRecognizer类,是对iOS中的事件传递机制面向应用的封装,将手势消息的传递抽象为了对象.有关消息传递的一些讨论,在前面的博客中有提到: iOS事件响应控制:http://my.oschina.net/u/2340880/bl

iphone-扩大UIGestureRecognizer点击区域

问题描述 扩大UIGestureRecognizer点击区域 在一些view中有点击动作,但是这些view太小了,点击的时候非常困难,而且这些动作是必须要求的,怎么样能扩大点击区域? 解决方案 如果你是在自定义UIView中实现的,可以重新 hitTest:withEvent: 方法 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { CGRect frame = CGRectInset(self.bounds, -20

IOS开发之手势——UIGestureRecognizer 共存

在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureRecognizer 的衍生类別来进行判断.用 UIGestureRecognizer 的好处在于有现成的手势,开发者不用自己计算手指移动轨迹.UIGestureRecognizer的衍生类別有以下几种: UITapGestureRecognizer UIPinchGestureRecognizer

浅谈3D Touch(2) -- UITouch && Peek && Pop

UITouch 之所以先说UITouch是因为从Peek到Pop这个过程中,相信其内部用到了这个东西,我们来看一下iOS9在这个UITouch中加了哪些东西: UIForceTouchCapability UIForceTouchCapabilityUnknown //3D Touch检测失败 UIForceTouchCapabilityUnavailable //3D Touch不可用 UIForceTouchCapabilityAvailable //3D Touch可用 这3个枚举值就是我

sdk-确认UIGestureRecognizer

问题描述 确认UIGestureRecognizer 大家好,请教一个关于UIGestureRecognizer的问题. 比如我需要在用户在操作之后,用UIAlertView来确认提交动作,我试过一些方法都没成功. 清高手帮忙解决一下,谢谢. 解决方案 这样: UISwipeGestureRecognizer *gesture1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeRig

ios的手势操作之UIGestureRecognizer浅析(推荐)_IOS

一.概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)

iOS - UITouch

前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITouch : NSObject @available(iOS 2.0, *) public class UITouch : NSObject 触摸事件基本都是发生在 viewController 中,首先触摸的对象是视图,而视图的类 UIView 继承了 UIRespnder 类,但是要对事件作出处理,还需要重写 UIResponder 类中定义的事件处理函数.根据不同的触摸状态,程序会调用相应的处理函数.

开源中国iOS客户端学习 (一) Prefix.pch文件

当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文 件的文件,pch全称是"precompiled header",也就是预编译头文件,该文件里存放的工程中一些不 常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度.我们知道当我们修改一 个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch 中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会

IOS开发:Cocos2d触摸分发原理分析

  触摸是iOS程序的精髓所在,良好的触摸体验能让iOS程序得到非常好的效果,例如Clear.鉴于同学们只会用cocos2d的 CCTouchDispatcher 的 api 但并不知道工作原理,但了解触摸分发的过程是极为重要的.毕竟涉及到权限.两套协议等的各种分发. 本文以cocos2d-iphone源代码为讲解.cocos2d-x 于此类似,就不过多赘述了. 零.cocoaTouch的触摸 在讲解cocos2d触摸协议之前,我觉得我有必要提一下CocoaTouch那四个方法.毕竟cocos2