• 手势识别器


    UITapGestureRecognizer是轻拍⼿手势识别器,能识别轻拍操作

    UILongPressGestureRecognizer是⻓长按⼿手势识别器,能识别⻓长按操作。

    UIRotationGestureRecognizer是旋转⼿手势识别器,能识别旋转操作。

    UIPinchGestureRecognizer是捏合⼿手势识别器,能识别捏合操作。

    UIPanGestureRecognizer是平移⼿手势识别器,能识别拖拽操作。

    UISwipeGestureRecognizer是轻扫⼿手势识别器,能识别拖拽操作。

    UIScreenEdgePanGestureRecognizer是屏幕边缘轻扫识别器,是iOS7中新增的⼿手势。 

    以轻拍、旋转、捏合为例

    #import "RootViewController.h"
    
    @interface RootViewController () <UIGestureRecognizerDelegate>
    
    @end
    
    @implementation RootViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        // 创建一个轻拍手势
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doTap:)];
        [imageView addGestureRecognizer:tap];
        [tap release];
        
        // 创建一个旋转手势
        UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(doRotation:)];
        rotation.delegate = self;
        [imageView addGestureRecognizer:rotation];
        [rotation release];
    
        // 创建一个捏合手势
        UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(doPinch:)];
        pinch.delegate = self;
        [imageView addGestureRecognizer:pinch];
        [pinch release];
    }    
    
    - (void)doTap:(UITapGestureRecognizer *)tap
    {
        // 通过tap.view可以获取当前手势放置在哪一个view上
        NSLog(@"被点击了,(⊙o⊙)哦,NO %@", tap.view);
    }
    
    - (void)doRotation:(UIRotationGestureRecognizer *)rotationGesture
    {
        NSLog(@"转啦,啊哈哈");
        // 在做旋转的时候对应的有两个函数,一个是CGAffineTransformRotate,还有一个是CGAffineTransformMakeRotation。这两个函数的区别就在于第一个函数可以在上次的基础上继续旋转,第二个函数只能做一次旋转
        // 1.在上次的基础上做旋转
        rotationGesture.view.transform = CGAffineTransformRotate(rotationGesture.view.transform, rotationGesture.rotation);
        // 2.将手势识别器的旋转角度归零,下次让其在新的旋转角度上进行旋转,而不是累加。
        rotationGesture.rotation = 0;
    }
    
    - (void)doPinch:(UIPinchGestureRecognizer *)pinchGesture
    {
        pinchGesture.view.transform = CGAffineTransformScale(pinchGesture.view.transform, pinchGesture.scale, pinchGesture.scale);
        // 设置比例为1,可以让大小的缩放和手指缩放同步
        pinchGesture.scale = 1;
    }
    
    // 想要在旋转的过程中也能捏合,需要实现代理中得这个方法,返回YES就可以
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {
        return YES;
    }
    

      

  • 相关阅读:
    Android基础之项目结构分析
    串口调试,提示the given port name does not start with COM/com异常解决办法,,发现是打印机在搞怪
    C# 通过URL获取图片并显示在PictureBox上的方法
    学习资料集合
    C#语音朗读文本 — TTS的实现
    SQL SERVER 2008安装错误(is not a valid login or you do have permission)
    函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
    SerialPort使用
    Javascript函数的几种写法
    JS验证图片格式和大小并预览
  • 原文地址:https://www.cnblogs.com/sqdhy-zq/p/4764433.html
Copyright © 2020-2023  润新知