7种常用手势UIGestureRecognizer介绍
- #import "ViewController.h"
- @interface ViewController ()
- {
- UITapGestureRecognizer *_tap;
- UIPanGestureRecognizer *_pan;
- UIPinchGestureRecognizer *_pinch;
- UIRotationGestureRecognizer *_rotation;
- UISwipeGestureRecognizer *_swipe;
- UILongPressGestureRecognizer *_longpress;
- UIScreenEdgePanGestureRecognizer *_edgePan;
- }
- @property (nonatomic, weak) IBOutlet UIView *testView;
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- [self addTapGesture];
- [self addPanGesture];
- [self addPinchGesture];
- [self addRotationGesture];
- [self addSwipeGesture];
- [self addLongpressGesture];
- [self addEdgePanGesture];
- // 手势谦让
- [self gestureHumility];
- }
- #pragma mark - 手势
- //单击
- - (void)addTapGesture{
- _tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
- _tap.numberOfTapsRequired = 1;
- [_testView addGestureRecognizer:_tap];
- }
- //拖拽
- - (void)addPanGesture{
- _pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
- _pan.minimumNumberOfTouches = 1;
- [_testView addGestureRecognizer:_pan];
- }
- //捏合
- - (void)addPinchGesture{
- _pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];
- [_testView addGestureRecognizer:_pinch];
- }
- //旋转
- - (void)addRotationGesture{
- _rotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];
- [_testView addGestureRecognizer:_rotation];
- }
- //轻扫
- - (void)addSwipeGesture{
- _swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
- //指定扫动方向
- _swipe.direction = UISwipeGestureRecognizerDirectionDown;
- [_testView addGestureRecognizer:_swipe];
- }
- //长按
- - (void)addLongpressGesture{
- _longpress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longpressAction:)];
- _longpress.minimumPressDuration = 1.0;
- [_testView addGestureRecognizer:_longpress];
- }
- //边缘滑动手势
- - (void)addEdgePanGesture{
- _edgePan = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(edgePanAction:)];
- _edgePan.edges = UIRectEdgeLeft;
- [self.view addGestureRecognizer:_edgePan];
- }
- #pragma mark - 动作
- //单击
- - (void)tapAction:(UITapGestureRecognizer *)tap{
- NSLog(@"单击");
- }
- //拖拽
- - (void)panAction:(UIPanGestureRecognizer *)pan{
- NSLog(@"拖拽");
- CGPoint point = [pan translationInView:pan.view];
- // pan.view.transform =CGAffineTransformMakeTranslation(point.x, point.y);
- pan.view.transform = CGAffineTransformTranslate(pan.view.transform, point.x, point.y);
- [pan setTranslation:CGPointZero inView:pan.view];
- }
- //捏合
- - (void)pinchAction:(UIPinchGestureRecognizer *)pinch{
- NSLog(@"捏合");
- pinch.view.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale);
- }
- //旋转
- - (void)rotationAction:(UIRotationGestureRecognizer *)rotation{
- NSLog(@"旋转");
- rotation.view.transform = CGAffineTransformMakeRotation(rotation.rotation);
- }
- //轻扫
- - (void)swipeAction:(UISwipeGestureRecognizer *)swipe{
- NSLog(@"向下轻扫");
- }
- //长按
- - (void)longpressAction:(UILongPressGestureRecognizer *)longpress{
- NSLog(@"长按");
- }
- //边缘滑动手势
- - (void)edgePanAction:(UIScreenEdgePanGestureRecognizer *)edgePan{
- NSLog(@"左边缘滑动");
- UIColor *random = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0];
- self.view.backgroundColor = random;
- }
- #pragma mark - privatemethods
- - (void)gestureHumility{
- [_pan requireGestureRecognizerToFail:_swipe];
- }
- @end