iOS -- 基本的手势

#import "WZViewController.h"


@interface WZViewController ()<UIGestureRecognizerDelegate>

@property (weak, nonatomic) IBOutlet UIView *gestureView;


@end


@implementation WZViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

    [self text];


}

//-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

//{

//    [super touchesBegan:touches withEvent:event];

//}

-(void)text

{

    [self swipe];//轻扫

    [self longpress];//长按

    

    [self rotate];//旋转

    [self pinch];//捏合

    

    [self pan];//拖拽

    

    [self tap];//敲击

}

//轻扫

-(void)swipe

{

    UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeClick)];

    swipeGesture.delegate = self;

    swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;

    [self.gestureView addGestureRecognizer:swipeGesture];

}

-(void)swipeClick

{

    NSLog(@"轻扫view");

}

//长按

-(void)longpress

{

    UILongPressGestureRecognizer *pressGesture = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(pressClick:)];

    // 至少长按2

    pressGesture.minimumPressDuration = 2;

    // 在触发手势之前,50px范围内长按有效

    pressGesture.allowableMovement = 50;

    pressGesture.delegate = self;

    [self.gestureView addGestureRecognizer:pressGesture];


}

-(void)pressClick:(UILongPressGestureRecognizer*)pressGesture

{

    NSLog(@"长按view");


}

//捏合手势

-(void)pinch

{

    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchClick:)];

    pinchGesture.delegate = self;

    [self.gestureView addGestureRecognizer:pinchGesture];


}

-(void)pinchClick:(UIPinchGestureRecognizer*)pinchGesture

{

    pinchGesture.view.transform = CGAffineTransformScale(pinchGesture.view.transform, pinchGesture.scale, pinchGesture.scale);

    pinchGesture.scale = 1;

}

//旋转

-(void)rotate

{

    UIRotationGestureRecognizer *rotateGesture = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotateClick:)];

    rotateGesture.delegate = self;

    [self.gestureView  addGestureRecognizer:rotateGesture];

}

-(void)rotateClick:(UIRotationGestureRecognizer *)rotateGesture

{

    rotateGesture.view.transform = CGAffineTransformRotate(rotateGesture.view.transform,  rotateGesture.rotation);

    rotateGesture.rotation = 0;

}

//拖拽

-(void)pan

{

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panClick:)];

    panGesture.delegate = self;

    [self.gestureView addGestureRecognizer:panGesture];


}

-(void)panClick:(UIPanGestureRecognizer*)panGesture

{

    //view上移动的距离

    CGPoint point = [panGesture translationInView:panGesture.view];

    panGesture.view.transform = CGAffineTransformTranslate(panGesture.view.transform, point.x, point.y);

    

    

//    CGPoint center = panGesture.view.center;

//    center.x += point.x;

//    center.y += point.y;

//    panGesture.view.center = center;

    [panGesture setTranslation:CGPointZero inView:panGesture.view];

}


//敲击

-(void)tap

{

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapClick:)];

    tapGesture.delegate = self;

    //    tapGesture.numberOfTapsRequired = 2;

    //    tapGesture.numberOfTouchesRequired = 2;

    [self.gestureView addGestureRecognizer:tapGesture];


}

-(void)tapClick:(UITapGestureRecognizer *)tapGesture

{

    NSLog(@"我被敲击了");

}

#pragma mark - 代理方法

/**

 *  当点击view的时候,会先调用这个方法

 */

//- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

//{

//    CGPoint pos = [touch locationInView:touch.view];

//    if (pos.x <= touch.view.frame.size.width * 0.5) {

//        return YES;

//    }

//    return NO;

//}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

{

    return YES;

}

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值