`
sunqichao
  • 浏览: 27429 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用iOS手势UIGestureRecognizer

    博客分类:
  • IOS
阅读更多

UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势:  

  1、拍击UITapGestureRecognizer (任意次数的拍击)   
  2、向里或向外捏UIPinchGestureRecognizer (用于缩放)   
  3、摇动或者拖拽UIPanGestureRecognizer   
  4、擦碰UISwipeGestureRecognizer (以任意方向)   
  5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)   
  6、长按UILongPressGestureRecognizer  
 
对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。下面列举几个具体示例代码:  

 
一个手指,拍击两次手势 
 
// 创建一个手势识别器 
 
UITapGestureRecognizer *oneFingerTwoTaps = 
 
  [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease]; 
 
// Set required taps and number of touches 
 
[oneFingerTwoTaps setNumberOfTapsRequired:2]; 
 
[oneFingerTwoTaps setNumberOfTouchesRequired:1]; 
 
// Add the gesture to the view 
 
[[self view] addGestureRecognizer:oneFingerTwoTaps]; 
 
消息方法oneFingerTwoTaps 
 
- (void)oneFingerTwoTaps 
 

 
  NSLog(@"Action: One finger, two taps"); 
 

 
两个手指,拍击两次手势 
 
    UITapGestureRecognizer *twoFingersTwoTaps = 
 
      [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersTwoTaps)] autorelease]; 
 
    [twoFingersTwoTaps setNumberOfTapsRequired:2]; 
 
    [twoFingersTwoTaps setNumberOfTouchesRequired:2]; 
 
    [[self view] addGestureRecognizer:twoFingersTwoTaps]; 
 
消息方法twoFingersTwoTaps 
 
    - (void)twoFingersTwoTaps { 
 
      NSLog(@"Action: Two fingers, two taps"); 
 
    } 
 
 
一个手指向上、向下擦碰手势 
 
// 向上擦碰 
 
    UISwipeGestureRecognizer *oneFingerSwipeUp = 
 
      [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeUp:)] autorelease]; 
 
    [oneFingerSwipeUp setDirection:UISwipeGestureRecognizerDirectionUp]; 
 
    [[self view] addGestureRecognizer:oneFingerSwipeUp]; 
 
      
 
    - (void)oneFingerSwipeUp:(UISwipeGestureRecognizer *)recognizer 
 
    { 
 
      CGPoint point = [recognizer locationInView:[self view]]; 
 
      NSLog(@"Swipe up - start location: %f,%f", point.x, point.y); 
 
    } 
 
    // 向下擦碰 
 
    UISwipeGestureRecognizer *oneFingerSwipeDown = 
 
      [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeDown:)] autorelease]; 
 
    [oneFingerSwipeDown setDirection:UISwipeGestureRecognizerDirectionDown]; 
 
    [[self view] addGestureRecognizer:oneFingerSwipeDown]; 
 
      
 
    - (void)oneFingerSwipeDown:(UISwipeGestureRecognizer *)recognizer 
 
    { 
 
      CGPoint point = [recognizer locationInView:[self view]]; 
 
      NSLog(@"Swipe down - start location: %f,%f", point.x, point.y); 
 
    } 
 
旋转手势 
 
UIRotationGestureRecognizer *twoFingersRotate = 
 
  [[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersRotate:)] autorelease]; 
 
[[self view] addGestureRecognizer:twoFingersRotate]; 
 
 
 
- (void)twoFingersRotate:(UIRotationGestureRecognizer *)recognizer 
 

 
  // Convert the radian value to show the degree of rotation 
 
  NSLog(@"Rotation in degrees since last change: %f", [recognizer rotation] * (180 / M_PI)); 
 

 
向里或向外捏的手势 
 
UIPinchGestureRecognizer *twoFingerPinch = 
 
  [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)] autorelease]; 
 
[[self view] addGestureRecognizer:twoFingerPinch]; 
 
 
 
- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer 
 

 
  NSLog(@"Pinch scale: %f", recognizer.scale); 
 
}

分享到:
评论

相关推荐

    ios-手势控制:点击、滑动、平移、捏合、旋转、长按、轻扫.zip

    只能使用UIGestureRecognizer的子类识别手势,每一个子类识别一个特定的手势。详细介绍。 这个demo使用了以下七种手势: 1. UITapGestureRecognizer 2. UISwipeGestureRecognizer 3. UIPanGestureRecognizer 4. ...

    iOS手势识别的详细使用方法(拖动,缩放,旋转,点击,手势依赖,自定义手势)

    iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类。手势识别UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发这可以直接使用这些手势识别。 UITapGestureRecognizer...

    ios-触摸任何位置手势返回框架.zip

    iOS技术交流群: 302157745 轻量级手势返回框架(简单,高效) ViewController * rootVC = [ViewController new]; WHC_NavigationController * rootNV = [[WHC_NavigationController alloc] ...

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

    本篇文章主要介绍了ios的手势操作之UIGestureRecognizer浅析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。

    IOS手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)

    下面通过图文并茂的方式给大家分享下IOS手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)的相关内容。 1、UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性。 iOS ...

    ios开发中手势多点触控实现

    通过注册各种手势,或者通过override视图的touchmoved来实现多点触控移动,旋转,放大,

    IOS 七种手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)详解及实例代码

    iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作。 UIPanGestureRecognizer(拖动) UIPinchGestureRecognizer(捏合) ...

    uiview随手势旋转

    KTOneFingerRotationGestureRecognizer 实现了自定义的 UIGestureRecognizer 用于实现单手指旋转操作,同时会跟踪手指的移动。

    ios关于手势

    UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势: 1、拍击UITapGestureRecognizer (任意...

    敏感:iOS中使用手势的特殊方式

    Sensitive是一个简化iOS中手势操作的库。 忘记原始UIGestureRecognizer目标/操作模式。 使用Sensitive您可以在任何UIView实例上调用onTap , onPinch , onSwipe并实现该手势的处理程序。 这就是您应该了解的所有...

    IOS中各种手势操作实例代码

    IOS中手势操作一般是 UIGestureRecognizer 类的几个手势子类去实现,一般我们用到的手势就这么5种: 1、点击 UITapGestureRecognizer 2、平移 UIPanGestureRecognizer 3、缩放 UIPinchGestureRecognizer 4、旋转...

    iOS开发之手势识别

    手势识别操作基类UIGestureRecognizer不能直接使用,我们常使用的是它的子类,这些手势操作类都继承自UIGestureRecognizer类 常用手势识别子类: 点按手势 UITapGestureRecognizer 捏合手势 ...

    iOS开发中的几个手势操作实例分享

    手势操作—识别单击还是双击 在视图上同时识别单击手势和双击手势的问题在于,当检测到一个单击操作时...另一个方法是使用手势识别器,即UIGestureRecognizer的各种具体子类。 一.重写事件处理方法 代码如下: – (id)i

    Gesturizer:已弃用。 一个简单的iOS应用程序,用于浏览手势识别器

    弃用警告 Swift教育资料已过时,将不再... 使用UIGestureRecognizer子类来标准化最常见的界面手势。 使用UIView动画增强界面更改,以作为教授Swift闭包表达式的工具。 贡献 参见 。 执照 这项工作由Yong Bakos根据。

    ForceTouchGesture:用Swift 2编写的3D触摸手势识别器

    要求iOS 7.0以上Xcode7.1 +用法UIView的初始化和添加与常规UIGestureRecognizer相同。 let gestureRecognizer = ForceTouchGestureRecognizer(target: self, action: "forceTouchHandler:")gestureRecognizer....

    BFDragGestureRecognizer(iOS源代码)

    来源:github/BFDragGestureRecLicence:BSD (New)作者:Bajee  BFDragGestureRecognizer是一个UIGestureRecognizer的子类。手势支持在拖拉一个视图到某个滑动视图的边缘时,能够自动滚动。

    能够跨屏的拖拽手势

    这是一个能够跨屏的拖拽手势,源码BFDragGestureRecognizer,BFDragGestureRecognizer是一个UIGestureRecognizer的子类,用于在滚动视图里拖拽视图,并且能自动探测滚动视图的边缘实现跨屏拖拽效果。 测试环境: ...

    USSForceGestureRecognizer:新iPhone上的3D Touch实验项目

    USSForceGestureRecognizer是适用于iOS的实验性强制手势识别器。 它是用Swift 2.0编写的,并且支持iOS 9及更高版本。 该项目的目的是测试3D Touch的开发人员API(以前是Force Touch,至今仍在API中引用),并提供...

Global site tag (gtag.js) - Google Analytics