IOS中的手势详解_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > IOS中的手势详解

IOS中的手势详解

 2015/4/14 10:22:37  杰瑞教育  程序员俱乐部  我要评论(0)
  • 摘要:1、点击UITapGestureRecognizer*tap=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(click)];//设置当前需要点击的次数[tapsetNumberOfTapsRequired:1];//设置当前需要触发事件的手指数量[tapsetNumberOfTouchesRequired:2];//设置当前代理tap.delegate=self
  • 标签:详解 iOS

1、点击

    UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click)];
    
    //设置当前需要点击的次数
    [tap setNumberOfTapsRequired:1];
    //设置当前需要触发事件的手指数量
[tap setNumberOfTouchesRequired:2];
//设置当前代理
tap.delegate=self;
[_view addGestureRecognizer:tap];
//触发方法
- (void) click{
    NSLog(@"当前视图被点击了! ");
}

2、长按

UILongPressGestureRecognizer * longPress=[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress)];
//设置当前长按最小的时长
longPress.minimumPressDuration=2;

//设置允许的移动范围
 [longPress setAllowableMovement:2];
[_view addGestureRecognizer:longPress];
//触发方法
- (void) longPress{
    NSLog(@"长按事件触发! ");
}

3、轻扫

UISwipeGestureRecognizer * swip=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipMethod)];
    //往左边方向
  swip.direction=UISwipeGestureRecognizerDirectionLeft  ;
    //往右边方向
  swip.direction=UISwipeGestureRecognizerDirectionRight  ;
    //往上面方向
    swip.direction=UISwipeGestureRecognizerDirectionUp  ;
    //往下面方向
   swip.direction=UISwipeGestureRecognizerDirectionDown  ;
    [_view addGestureRecognizer:swip];
    
    //触发方法
    - (void) swipMethod{
        NSLog(@"轻扫事件触发! ");
}

  如果涉及到2个以上方向的手势最好添加多个UISwipeGestureRecognizer 对象并设置不同的方向,不要通过下面方式用符号|来连接:

swip.direction=UISwipeGestureRecognizerDirectionLeft  | UISwipeGestureRecognizerDirectionRight  

4、拖动

 

  第一步:添加视图

_view=[[UIView alloc] initWithFrame:CGRectMake(50, 250, 300, 200)];
[_view setBackgroundColor:[UIColor redColor]];
[self.view addSubview:_view];

  第二步:添加手势

UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(paned:)];
[_view addGestureRecognizer:pan];

  第三步:实现方法

- (void) paned:(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];
}

5、旋转

 

  第一步:添加视图

_view=[[UIView alloc] initWithFrame:CGRectMake(50, 250, 300, 200)];
[_view setBackgroundColor:[UIColor redColor]];
[self.view addSubview:_view];

  第二步:添加手势

UIRotationGestureRecognizer * roate=[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];
    [_view addGestureRecognizer:roate];
roate.delegate=self;

  第三步:实现方法

- (void) rotate:(UIRotationGestureRecognizer *) rote{
   //获取当前旋转的度数
   CGFloat rotation= rote.rotation;
    //通过仿射变换实现旋转
  _view.transform=CGAffineTransformRotate(_view.transform, rotation);
    //防止旋转叠加需要清零
    rote.rotation=0;
}

6、捏合

 

  第一步:添加视图

_view=[[UIView alloc] initWithFrame:CGRectMake(50, 250, 300, 200)];
[_view setBackgroundColor:[UIColor redColor]];
[self.view addSubview:_view];

  第二步:添加手势

UIPinchGestureRecognizer * pich=[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(piches:)];
[_view addGestureRecognizer:pich];
pich.delegate=self;

  第三步:实现方法

- (void) piches:(UIPinchGestureRecognizer *) pich{
    //获取比例
    CGFloat scale=pich.scale;
    //通过仿射变换实现缩放
    _view.transform=CGAffineTransformScale(_view.transform, scale, scale);
    //防止比例叠加需要置为1
    pich.scale=1;
 }

 

【补充】如果需要同时响应多个手势需要重写代理方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    return YES;
}

 

发表评论
用户名: 匿名