zoukankan      html  css  js  c++  java
  • IOS开发UI篇—gesture详解(一)

    前言  

      在iOS中,你可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势.GestureRecognizer将低级别的转换为高级别的执行行为,是你绑定到view的对象,当发生手势,绑定到的view对象会响应,它确定这个动作是否对应一个特定的手势(swipe,pinch,pan,rotation).如果它能识别这个手势,那么就会向绑定它的view发送消息,如下图

     UIKit框架提供了一些预定义的GestureRecognizer.包含下列手势

    •  UITapGestureRecognizer敲击手势(单击和双击)
    •  UIPanGestureRecognizer(拖动手势)
    •  UIPinchGestureRecognizer(缩放手势)
    •  UISwipeGestureRecognizer(擦碰手势)
    •  UIRotationGestureRecognizer(旋转手势)
    •  UILongPressGestureRecognizer(长按手势)

    如果你想让你的应用程序来识别一个独特的手势,如选择目录或纠结的运动,你可以创建自己的自定义GestureRecognizer,将在下篇介绍

    将特定的手势和view相关联

      每一个特定的手势必须关联到view对象中才会有作用,一个view对象可以关联多个不同的特定手势,但是每一个特定的手势只能与一个view相关联。当用户触摸了view,这个GestureRecognizer就会接受到消息,它可以响应特定的触摸事件。

    与特定view关联

    • 创建GestureRecognizer实例
    • addGestureRecognizer
    • 实现处理手势的方法

    可以使用removeGestureRecognizer: 来移除手势。

    代码

    手势识别状态

      

    Gesture recognizers从一个状态转到另一状态(state)。对于每个状态,根据它们是否符合特定条件来决定时候可以移动到下一个状态。它们分析多点触摸。是否识别失败。未能识别手势意味着state 转换失败。UIGestureRecognizerStateFailed。详见UIGestureRecognizerState枚举

    代码

    为view添加多个手势

      当一个view添加多个手势时,在缺省情况下,没有为优先执行哪个手势做排序,每次发生不同。不过你可以覆盖默认的行为(使用类方法、委托方法、和子类化覆盖这些)

    • 指定一个Gesture recognizers应该在另一个前捕捉。

    requireGestureRecognizerToFail: 这个方法就是在作为参数的Gesture recognizer失败以后接受者才发生,否则从不会发生。

    [self.panRecognizer requireGestureRecognizerToFail:self.swipeRecognizer];
    • 允许2个手势同时操作

    gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

    • 禁止在某一点发生Gesture recognizers
    代码

    指定一个单向关系两个手势识别器

    想控制两个识别器相互作用,但你需要指定一个单向关系,您可以重写或canPreventGestureRecognizer:或canBePreventedByGestureRecognizer:子类方法。return yes。例如,如果你想要一个旋转的姿态来防止捏动作,但你不想夹手势防止旋转的姿态。例如,你想一个旋转手势阻止一个缩放手势,但你不想一个缩放手势阻止旋转手势,就加入下面代码

    [rotationGestureRecognizer canPreventGestureRecognizer:pinchGestureRecognizer];

  • 相关阅读:
    WC2021 游记
    TC11054
    P5904
    CF741D
    CF1467 题解
    [CTSC2008]网络管理 [树剖+整体二分]
    [HNOI2015]接水果[整体二分]
    [SDOI2010]粟粟的书架 [主席树]
    整体二分的一些见解[整体二分学习笔记]
    P2710 数列[fhq treap]
  • 原文地址:https://www.cnblogs.com/iosblogx/p/4474311.html
Copyright © 2011-2022 走看看