zoukankan      html  css  js  c++  java
  • 手势识别器

    #import "RootViewController.h"
    #import "RootView.h"
    #import "SecondViewController.h"
    
    @interface RootViewController ()<UIGestureRecognizerDelegate>// 设置代理
    @property (nonatomic, strong) RootView *rootView;
    @end
    
    @implementation RootViewController
    
    - (void)loadView
    {
        self.rootView = [[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];
        self.view = self.rootView;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        //添加轻拍点击事件
        [self tapGesture];
        //添加平移手势
    //    [self panGesture];
        // 添加捏合手势
        [self pinchGesture];
        // 添加旋转手势
        [self rotationGesture];
        // 添加清扫手势
        [self swipeGesture];
        // 添加长按按钮
        [self longPressGesture];
        // 添加边缘清扫
        [self screenEdgePanGesture];
        
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    #pragma mark 轻拍 UITapGestureRecognizer
    
    // 添加轻拍手势
    
    - (void)tapGesture
    {
        //1. 创建手势识别器对象
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction:)];
        
        //2. 讲手势添加到相应的视图上
        [self.rootView.myImageView addGestureRecognizer:tap];
    }
    
    // 实现轻拍手势事件
    - (void)tapGestureAction:(UITapGestureRecognizer *)tap
    {
        NSLog(@"轻拍");
    }
    
    #pragma mark 平移 UIPanGestureRecognizer
    - (void)panGesture
    {
        // 1.创建手势对象
        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureAction:)];
        // 2. 将手势添加到相应的视图上
        [self.rootView.myImageView addGestureRecognizer:pan];
        
    }
    
    - (void)panGestureAction:(UIPanGestureRecognizer *)pan
    {
        // 在view上面挪动的距离
        CGPoint p = [pan translationInView:pan.view];
        pan.view.transform = CGAffineTransformTranslate(pan.view.transform, p.x, p.y);
        // 清空移动距离
        [pan setTranslation:CGPointZero inView:pan.view];
        
        NSLog(@"平移");
    }
    
    #pragma mark 缩放手势 (捏合) UIPinchGestureRecognizer
    
    - (void)pinchGesture
    {
        // 1.创建手势对象
    
        UIPinchGestureRecognizer *pich = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureAction:)];
        // 设置代理
        pich.delegate = self;
        
        
        // 2. 将手势添加到相应的视图上
        [self.rootView.myImageView addGestureRecognizer:pich];
        
    }
    
    - (void)pinchGestureAction:(UIPinchGestureRecognizer *)pich
    {
        
        pich.view.transform = CGAffineTransformScale(pich.view.transform, pich.scale, pich.scale);
        pich.scale = 1;//(比例大小一样)
        
        NSLog(@"捏合");
    }
    
    #pragma mark 旋转手势 UIRotationGestureRecognizer
    
    - (void)rotationGesture
    {
        
        UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureAction:)];
        // 设置代理 (目的)旋转和捏合一起用
        rotation.delegate = self;
        
        [self.rootView.myImageView addGestureRecognizer:rotation];
        
    }
    
    - (void)rotationGestureAction:(UIRotationGestureRecognizer *)rotation
    {
        rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
        rotation.rotation = 0;//(旋转的角度清零)
        
        NSLog(@"旋转");
        
    }
    
    // 实现协议方法, 同时识别多个手势
    
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {
        return YES;
    }
    
    #pragma mark 长按手势 UILongPressGestureRecognizer
    
    - (void)longPressGesture
    {
        UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureAction:)];
        longPress.minimumPressDuration = 1.0;
    //    longPressGr.minimumPressDuration = 1.0;
    //    [self.tableView addGestureRecognizer:longPressGr];
    //    [longPressGr release];
        [self.rootView.myImageView addGestureRecognizer:longPress];
        
    }
    
    - (void)longPressGestureAction:(UILongPressGestureRecognizer *)longPress
    {
        if (longPress.state == UIGestureRecognizerStateBegan) {
    //        longPress.rootView.myImageView.backgroundColor = [UIColor greenColor];
    //        CGPoint point = [longPress locationInView:self.rootView.myImageView];
    //                NSIndexPath * indexPath = [self.rootView.myImageView indexPathForRowAtPoint:point];
    //
            NSLog(@"长按按钮");
            
    //                if(indexPath == nil) return ;
        }
     //    longPressGesture.view.backgroundColor = [UIColor random];
    //    if(gesture.state == UIGestureRecognizerStateBegan)
    //    {
    //        CGPoint point = [gesture locationInView:self.tableView];
    //        
    //        NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint:point];
    //        
    //        if(indexPath == nil) return ;
    }
    
    #pragma mark 清扫手势 UISwipeGestureRecognizer
    
    - (void)swipeGesture
    {
        UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureAction:)];
        swipe.direction = UISwipeGestureRecognizerDirectionLeft;
        [self.rootView.myImageView addGestureRecognizer:swipe];
    }
    
    
    - (void)swipeGestureAction:(UISwipeGestureRecognizer *)swipe
    {
        SecondViewController *secondVC = [[SecondViewController alloc] init];
        [self presentViewController:secondVC animated:YES completion:nil];
        NSLog(@"向左扫");
    }
    
    
    #pragma mark 屏幕边缘轻扫识别器 UIScreenEdgePanGestureRecognizer
    
    - (void)screenEdgePanGesture
    {
        UIScreenEdgePanGestureRecognizer *screen = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screenEdgePanGestureAction:)];
        screen.edges = UIRectEdgeRight;
        [self.rootView addGestureRecognizer:screen];
        
    }
    
    - (void)screenEdgePanGestureAction:(UIScreenEdgePanGestureRecognizer *)screen
    {
        NSLog(@"");
    }
  • 相关阅读:
    2019.01.06-dtoj-2437: [Noi2011]兔兔与蛋蛋
    2019.01.03-bzoj-1443-[JSOI2009]游戏Game
    2019.01.03-dtoj-4104-yjqaa
    2019.01.03-sg函数模板
    2019.01.02-bzoj-4550: 小奇的博弈
    2019.01.02-dtoj2293-幻想乡开店(shop)
    OCP 071中文考试题库(cuug内部资料)第5题
    OCP 063中文考试题库(cuug内部资料)第4题
    OCP 063中文考试题库(cuug内部资料)第3题
    OCP 062中文考试题库(cuug内部资料)第4题
  • 原文地址:https://www.cnblogs.com/leikun1113/p/5539460.html
Copyright © 2011-2022 走看看