手势

来源:互联网 发布:软件工程硕士培养方案 编辑:程序博客网 时间:2024/05/01 09:54

在视图添加手势之前,先设置视图的属性
允许用户交互
self.view.userInteractionEnabled = YES;
允许多点触摸
self.view.multipleTouchEnabled = YES;

一、UITapGestureRecognizer 触摸手势

创建
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeBGImg:)];

设置触摸次数
tap.numberOfTapsRequired = 2;

设置触摸点个数
tap.numberOfTouchesRequired = 1;

为视图添加手势
[self.bgImg addGestureRecognizer:tap];

二、UILongPressGestureRecognizer 长按手势
创建
UILongPressGestureRecognizer *recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
设置最小长按时间(默认为0.5秒)
recognizer.minimumPressDuration = 1.0;
添加
[imgVCustom addGestureRecognizer:recognizer];

三、UISwipeGestrueRecognizer 滑动(轻扫)手势

设置滑动的方向
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;

四、UIPinchGestureRecognizer 缩放手势
UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)];

  • (void) handlePinch:(UIPinchGestureRecognizer*) recognizer
    {
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    recognizer.scale = 1; //缩放比例
    }

五、UIRotationGestureRecognizer 旋转手势
UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotate:)];
[snakeImageView addGestureRecognizer:rotateRecognizer];

  • (void) handleRotate:(UIRotationGestureRecognizer*) recognizer
    {
    recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
    recognizer.rotation = 0; //旋转角度
    }

六、UIPanGestureRecognizer 拖移手势
创建
UIImageView *snakeImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@”snake.png”]];
snakeImageView.frame = CGRectMake(50, 50, 100, 160);
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]
initWithTarget:self
action:@selector(handlePan:)];
[snakeImageView addGestureRecognizer:panGestureRecognizer];
[self.view setBackgroundColor:[UIColor whiteColor]];
[self.view addSubview:snakeImageView];

回调方法:
- (void) handlePan:(UIPanGestureRecognizer*) recognizer
{
CGPoint translation = [recognizer translationInView:self.view]; //得到偏移量
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:self.view];
}

七、摇动手势
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@”motion”);
}
使视图控制器成为第一响应者
-(BOOL)canBecomeFirstResponder{
return YES;
}

处理单击与双击手势冲突的问题(tap1:单击,tap2:双击)
[tap1 requireGestureRecognizerToFail:tap2]; tap2手势验证失败,则触发tap1手势

手势一般都会拥有几个状态:start,change,end
if (longPress.state == UIGestureRecognizerStateBegan) {
NSLog(@”start”);
}else if (longPress.state == UIGestureRecognizerStateChanged){
NSLog(@”change”);
}else{
NSLog(@”end”);
}

0 0
原创粉丝点击