| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
pwmd
10年前发布

IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)

点击        UITapGestureRecognizer    长按        UILongPressGestureRecognizer    轻扫        UISwipeGestureRecognizer    拖拽        UIPanGestureRecognizer    旋转        UIRotationGestureRecognizer    捏合缩放 UIPinchGestureRecognizer        详细代码如下:      #import "ViewController.h"    @interface ViewController () <UIGestureRecognizerDelegate>  {      UIView * _view;  }  @end    @implementation ViewController    - (void)viewDidLoad {      [super viewDidLoad];            //创建视图      _view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];      _view.backgroundColor=[UIColor blueColor];      _view.center=self.view.center;      [self.view addSubview:_view];              //点击      UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapClick)];            //当前需要点击次数      tap.numberOfTapsRequired=2;      //[tap setNumberOfTapsRequired:2];    //同上            //设置当前出发时间需要的手指数      tap.numberOfTouchesRequired=2;   // option键  模拟手指      //[tap setNumberOfTouchesRequired:2];   //同上            [_view addGestureRecognizer:tap];        //长按      UILongPressGestureRecognizer * longPress=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressClick)];            //在长按过程中移动10个单位也算长按      longPress.allowableMovement=10;      //[longPress setAllowableMovement:10];     //同上            //长按的最短时间      longPress.minimumPressDuration=2;      [_view addGestureRecognizer:longPress];                    //轻扫      UISwipeGestureRecognizer * swipe=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction)];            //往右边的方向 ——>      swipe.direction=UISwipeGestureRecognizerDirectionRight;      [_view addGestureRecognizer:swipe];             //轻扫      UISwipeGestureRecognizer * swipe2=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction2)];            //往左边的方向 <——      swipe2.direction=UISwipeGestureRecognizerDirectionLeft;      [_view addGestureRecognizer:swipe2];        //轻扫      UISwipeGestureRecognizer * swipe3=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction3)];            //往上边的方向 ⬆️      swipe3.direction=UISwipeGestureRecognizerDirectionUp;      [_view addGestureRecognizer:swipe3];              //轻扫      UISwipeGestureRecognizer * swipe4=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction4)];            //往下边的方向 ⬇️      swipe4.direction=UISwipeGestureRecognizerDirectionDown;      [_view addGestureRecognizer:swipe4];        //拖拽      UIPanGestureRecognizer * pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];            [_view addGestureRecognizer:pan];              //旋转      UIRotationGestureRecognizer * rotation=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotation:)];      rotation.delegate=self;      [_view addGestureRecognizer:rotation];              //捏合缩放      UIPinchGestureRecognizer * pinch=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinch:)];      pinch.delegate=self;      [_view addGestureRecognizer:pinch];       }      #pragma mark - 点击  - (void) tapClick  {      NSLog(@"点击");  }  #pragma mark - 长按  - (void)longPressClick  {      NSLog(@"长按");  }    #pragma mark - 向右滑  - (void) swipeAction  {      NSLog(@"right");  }  #pragma mark - 向左滑  - (void) swipeAction2  {      NSLog(@"left");  }  #pragma mark - 向上滑  - (void) swipeAction3  {      NSLog(@"up");  }  #pragma mark - 向下滑  - (void) swipeAction4  {      NSLog(@"down");  }    #pragma mark - 拖拽移动  - (void) panAction:(UIPanGestureRecognizer *) pan  {      //获取移动的大小      CGPoint point=[pan translationInView:pan.view];            //更改视图的中心点坐标      CGPoint points=_view.center;      points.x+=point.x;      points.y+=point.y;      _view.center=points;            //每次都清空一下,消除坐标叠加      [pan setTranslation:CGPointZero inView:pan.view];  }    #pragma mark - 旋转  - (void) rotation:(UIRotationGestureRecognizer *) rote  {      //获取当前旋转的度数      CGFloat rotation=rote.rotation;            //通过仿射变换实现旋转      _view.transform=CGAffineTransformRotate(_view.transform, rotation);      //防止旋转叠加,清零      rote.rotation=0;        }    #pragma mark - 缩放捏合  - (void) pinch:(UIPinchGestureRecognizer *) pinch  {      //获取比例      CGFloat scale=pinch.scale;            //通过仿射变换实现缩放      _view.transform=CGAffineTransformScale(_view.transform, scale, scale);            //防止比例叠加      pinch.scale=1;              }    #pragma mark - 代理方法实现旋转 + 缩放捏合 可同时进行  - (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer  {      return YES;  }      - (void)didReceiveMemoryWarning {      [super didReceiveMemoryWarning];      // Dispose of any resources that can be recreated.  }    @end        需要注意点:                        1.键盘上的option键模拟手指                   2.对同一个view来说,拖拽时,向左向右向上向下的手势失效。