zoukankan      html  css  js  c++  java
  • iOS开发中六种手势识别

    iOS开发中手势识别有六种: 

    轻击手势(TapGestureRecognizer), 

    轻扫手势 (SwipeGestureRecognizer), 

    长按手势(LongPressGestureRecognizer), 

    拖动手势(PanGestureRecognizer), 

    捏合手势(PinchGestureRecognizer), 

    旋转手势(RotationGestureRecognizer), 

    1,轻击手势(TapGestureRecognizer) 

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
    tapGesture.numberOfTapsRequired = 1; //点击次数
    tapGesture.numberOfTouchesRequired = 1; //点击手指数
    [self.view addGestureRecognizer:tapGesture];
    
    //轻击手势触发方法
    -(void)tapGesture:(UITapGestureRecognizer *)sender
    {
        //your code
    }

    2,长按手势(LongPressGestureRecognizer) 

    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture:)];
    //设置长按时间
    longPressGesture.minimumPressDuration = 0.5;
    [self.view addGestureRecognizer:longPressGesture];
    //长按手势触发方法
    -(void)longPressGesture:(id)sender
    {
    	 UILongPressGestureRecognizer *longPress = sender;
    	 if (longPress.state == UIGestureRecognizerStateBegan)
    	 {
    		 //your code
    	 }
    }
    说明:长按手势的常用状态如下
    开始:UIGestureRecognizerStateBegan
    改变:UIGestureRecognizerStateChanged
    结束:UIGestureRecognizerStateEnded
    取消:UIGestureRecognizerStateCancelled
    失败:UIGestureRecognizerStateFailed

    3,轻扫手势(SwipeGestureRecognizer) 

    UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
    //设置轻扫的方向
    swipeGesture.direction = UISwipeGestureRecognizerDirectionRight; //向右
    [self.view addGestureRecognizer:swipeGesture];
    UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
    //设置轻扫的方向
    swipeGestureLeft.direction = UISwipeGestureRecognizerDirectionLeft; //向左
    [self.view addGestureRecognizer:swipeGestureLeft];
    //轻扫手势触发方法
    -(void)swipeGesture:(id)sender
    {
    	UISwipeGestureRecognizer *swipe = sender;
    	if (swipe.direction == UISwipeGestureRecognizerDirectionLeft)
    	{
    		//向左轻扫
    	}
    	if (swipe.direction == UISwipeGestureRecognizerDirectionRight)
    	{
    		//向右轻扫
    	}
    }

    4,捏合手势(PinchGestureRecognizer) 

    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)];
    [self.view addGestureRecognizer:pinchGesture];
    	////捏合手势触发方法
    -(void) pinchGesture:(id)sender
    {
    	UIPinchGestureRecognizer *gesture = sender;
    	//手势改变时
    	if (gesture.state == UIGestureRecognizerStateChanged)
    	{
    		 //捏合手势中scale属性记录的缩放比例
    		_imageView.transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale);
    	}
    	//结束后恢复
    	if(gesture.state==UIGestureRecognizerStateEnded)
    	{
    		[UIView animateWithDuration:0.5 animations:^{
    			_imageView.transform = CGAffineTransformIdentity;//取消一切形变
    		}];
    	}
    }

    5,拖动手势(PanGestureRecognizer) 

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];
    [self.view addGestureRecognizer:panGesture];
    
    //拖动手势触发方法
    -(void) panGesture:(id)sender
    {
        UIPanGestureRecognizer *panGesture = sender;
        CGPoint movePoint = [panGesture translationInView:self.view];
        //your code
    }

    6,旋转手势(RotationGestureRecognizer) 

    UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGesture:)];
    [self.view addGestureRecognizer:rotationGesture];
    //旋转手势触发方法
    -(void)rotationGesture:(id)sender
    {
    	UIRotationGestureRecognizer *gesture = sender;
    	if (gesture.state==UIGestureRecognizerStateChanged)
    	{
    		_imageView.transform=CGAffineTransformMakeRotation(gesture.rotation);
    	}
    	if(gesture.state==UIGestureRecognizerStateEnded)
    	{
    		[UIView animateWithDuration:1 animations:^{
    			_imageView.transform=CGAffineTransformIdentity;//取消形变
    		}];
    	}
    }
  • 相关阅读:
    【Idea】使用中的一些问题
    【Redis】Linux配置Redis(单点)
    【Zookeeper】Linux上安装zookeeper(单节点)
    【Echarts】设置主题、扇形格式化
    【JS】两个数组的交集、差集、并集、补集、去重
    【MySQL】 准确查询空值、ISNULL函数
    【健康】能量系统与训练应用和心肺耐力与运动表现
    【RabbitMQ】消息队列RabbitMQ与Spring集成
    【Java、Util】元和分的相互转换
    k8s入门系列之介绍篇
  • 原文地址:https://www.cnblogs.com/ming1025/p/6139851.html
Copyright © 2011-2022 走看看