iOS学习笔记-067.手势识别01——敲击、长按、轻扫手势

手势识别01——敲击、长按、轻扫手势

一、监听触摸事件的做法

如果想监听一个view上面的触摸事件,之前的做法是

自定义一个view
实现view的touches方法,在方法内部实现具体处理代码

通过touches方法监听view触摸事件,有很明显的几个缺点

必须得自定义view
由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件
不容易区分用户的具体手势行为

iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),在触摸事件处理方面,大大简化了开发者的开发难度

二、UIGestureRecognizer

为了完成手势识别,必须借助于手势识别器—-UIGestureRecognizer

利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势

UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势


UITapGestureRecognizer(敲击)

UILongPressGestureRecognizer(长按)

UISwipeGestureRecognizer(轻扫)

UIPinchGestureRecognizer(捏合,用于缩放)

UIPanGestureRecognizer(拖拽)

UIRotationGestureRecognizer(旋转)

三、手势识别状态变化示意图

这里写图片描述

四、手势识别的状态


typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {
    // 没有触摸事件发生,所有手势识别的默认状态
    UIGestureRecognizerStatePossible,
    // 一个手势已经开始但尚未改变或者完成时
    UIGestureRecognizerStateBegan,
    // 手势状态改变
    UIGestureRecognizerStateChanged,
    // 手势完成
    UIGestureRecognizerStateEnded,
    // 手势取消,恢复至Possible状态
    UIGestureRecognizerStateCancelled,
    // 手势失败,恢复至Possible状态
    UIGestureRecognizerStateFailed,
    // 识别到手势识别
    UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded
};

五、手势的接收方法

操作手势能不能接收,使用下面的方法,返回 YES 能接收,NO 不能接收

//是否能接收手势 NO不能,YES能
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    return YES;
}

六、UITapGestureRecognizer

6.1 说明

每一个手势识别器的用法都差不多

  1. 创建手势
  2. 添加手势

UITapGestureRecognizer的使用步骤如下



1. 创建手势识别器对象

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];

2. 设置手势识别器对象的具体属性

// 连续敲击2次
tap.numberOfTapsRequired = 2;
// 需要2根手指一起敲击
tap.numberOfTouchesRequired = 2;

3.添加手势识别器到对应的view上

[self.iconView addGestureRecognizer:tap];

4.监听手势的触发

[tap addTarget:self action:@selector(tapIconView:)];

6.2 代码


//
//  ViewController.m
//  03_UIView56_手势_单击事件
//
//  Created by 杞文明 on 2016/04/20 08:55:55   星期三
//  Copyright © 2016年 杞文明. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值