因为手势识别,所以爱上了苹果的。对我而言确实如此。在MBP上用触控板完全操控它,感觉爽极了,两点右击,三点拖动等等。后来换成Mac Mini很不适应。
在iOS中也有很多手势,如拖动,滑动,旋转,点击,长按,缩放等等。iOS中添加手势识别步骤基本如下:
- 定义手势
- 绑定事件
- 将手势添加到对象上
- 在绑定事件上
先创建一个空的工程,接着创建一个ViewController,为其添加一个属性:UIImageView *_imageView。我们所以的手势都暂时在这个UIImageView上演示,因为它的userInteractionEnabled属性默认是NO,所以先要设置为YES。
_imageView.userInteractionEnabled = YES;手势代码如下:
//手势
//轻触手势
UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
//点击次数
tap.numberOfTapsRequired = 2;
tap.numberOfTouchesRequired = 2;
//[_imageView addGestureRecognizer:tap];
//长按手势
UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
//[_imageView addGestureRecognizer:longPress];
//移动
UIPanGestureRecognizer* pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
//[_imageView addGestureRecognizer:pan];
//旋转
UIRotationGestureRecognizer* rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotation:)];
//[_imageView addGestureRecognizer:rotation];
//捏合
UIPinchGestureRecognizer* pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
//[_imageView addGestureRecognizer:pinch];
UISwipeGestureRecognizer* swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];
//右边方向
swipe.direction = UISwipeGestureRecognizerDirectionLeft;
[_imageView addGestureRecognizer:swipe];
UISwipeGestureRecognizer* swipe2 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];
//左边方向
swipe2.direction = UISwipeGestureRecognizerDirectionRight;
[_imageView addGestureRecognizer:swipe2];
}
- (void)swipe:(UISwipeGestureRecognizer*)swipe
{
if (swipe.direction == UISwipeGestureRecognizerDirectionLeft)
{
NSLog(@"向左边滑");
}
if (swipe.direction == UISwipeGestureRecognizerDirectionRight)
{
NSLog(@"向右边滑");
}
}
- (void)pinch:(UIPinchGestureRecognizer*)pinch
{
_imageView.bounds = CGRectMake(0, 0, _imageView.bounds.size.width * pinch.scale, _imageView.bounds.size.height * pinch.scale);
[pinch setScale:1];
}
- (void)rotation:(UIRotationGestureRecognizer*)rotation
{
_imageView.transform = CGAffineTransformRotate(_imageView.transform, rotation.rotation);
[rotation setRotation:0];
}
//移动
- (void)pan:(UIPanGestureRecognizer*)pan
{
CGPoint point = [pan translationInView:self.view];
NSLog(@"%@",NSStringFromCGPoint(point));
_imageView.center = CGPointMake(_imageView.center.x + point.x, _imageView.center.y + point.y);
//偏移量设置为0
[pan setTranslation:CGPointZero inView:self.view];
/*
x: 0 1 1 1
y: 0 1 0 0
0,0 1,1 3,2 6,3
*/
}
//长按
- (void)longPress:(UILongPressGestureRecognizer*)longPress
{
if (longPress.state == UIGestureRecognizerStateEnded)
{
NSLog(@"长按结束");
}
}
//轻触
- (void)tap:(UITapGestureRecognizer*)tap
{
NSLog(@"轻触");
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//NSLog(@"touchesBegan");
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch* touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
//NSLog(@"%f, %f", point.x, point.y);
//1,1 2,1 1,0
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
//NSLog(@"touchesEnded");
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
//NSLog(@"touchesCancelled");
}
311

被折叠的 条评论
为什么被折叠?



