温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

UITouch触摸与手势

发布时间:2020-09-21 02:36:20 来源:网络 阅读:464 作者:jna_114 栏目:开发技术

UITouch触摸与手势

1. //延迟调用单击事件,以便双击时可取消单击调用

        [selfperformSelector:@selector(singleTap) withObject:nilafterDelay:0.2];

2. //类方法取消单击调用方法,及时调用双击方法

        [NSObjectcancelPreviousPerformRequestsWithTarget:selfselector:@selector(singleTap) object:nil];

3.self.clipsToBounds= YES//当子视图越界时,剪切子视图

几种常用的手势

//创建手势视图

    UIView *gestureView = [[UIViewalloc]initWithFrame:CGRectMake(10, 20, 300, 300)];

    gestureView.backgroundColor = [UIColororangeColor];

    UILabel *label = [[UILabelalloc]initWithFrame:CGRectMake(100, 400, 100, 50)];

    label.text = @"0";

    label.textAlignment = NSTextAlignmentCenter;

    label.backgroundColor = [UIColorblueColor];

    label.tag = 100;

    [self.viewaddSubview:label];

    [self.viewaddSubview:gestureView];

   

   

    /******************点击手势*******************/

    UITapGestureRecognizer *tap1 = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tap1Action:)];

    //点击的数量---点击的次数

    tap1.numberOfTapsRequired = 1;

    //点击的个数-----手指的个数

    tap1.numberOfTouchesRequired = 1;

    [gestureView  addGestureRecognizer:tap1];

   

    //单手双击

UITapGestureRecognizer *tap2 = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tap2Action:)];

    tap2.numberOfTouchesRequired = 2;//双手双击

    tap2.numberOfTapsRequired = 2;

    [gestureView addGestureRecognizer:tap2];

    //如果tap2触发了.tap1则失效-----双击时,单击失效

    [tap1 requireGestureRecognizerToFail:tap2];

   

    /******************轻扫手势***********************/

    UISwipeGestureRecognizer *swip1 = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swip1Action:)];

    [gestureView addGestureRecognizer:swip1];

   

    /******************平移手势***********************/

    UIPanGestureRecognizer *pan1 = [[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(pan1Action:)];

    [gestureView addGestureRecognizer:pan1];

   

    /******************长按手势***********************/

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longPressAction:)];

    [gestureView addGestureRecognizer:longPress];

   

    /******************旋转手势***********************/

    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotationAction:)];

    [gestureView addGestureRecognizer:rotation];

   

    /******************捏合手势***********************/

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(pinchAction:)];

    [gestureView addGestureRecognizer:pinch];

 

 

   

   

}

/******************点击手势*******************/

//单击

- (void)tap1Action:(UITapGestureRecognizer *)tap1

{

    NSLog(@"单击");

    UILabel *label = (UILabel *)[self.viewviewWithTag:100];

    label.text = @"单击";

}

//双击

- (void)tap2Action:(UITapGestureRecognizer *)tap2

{

    NSLog(@"双击");

    UILabel *label = (UILabel *)[self.viewviewWithTag:100];

    label.text = @"双击";

}

/******************轻扫手势***********************/

- (void)swip1Action:(UISwipeGestureRecognizer *)swip1

{

//    NSLog(@"轻扫");

    UILabel *label = (UILabel *)[self.viewviewWithTag:100];

    if (swip1.direction == UISwipeGestureRecognizerDirectionRight) {

        label.text = @"向右轻扫";

    }elseif (swip1.direction == UISwipeGestureRecognizerDirectionLeft){

        label.text = @"向左轻扫";

    }elseif (swip1.direction == UISwipeGestureRecognizerDirectionUp){

        label.text = @"向上轻扫";

    }elseif (swip1.direction == UISwipeGestureRecognizerDirectionDown){

        label.text = @"向下轻扫";

    }

}

/******************平移手势***********************/

- (void)pan1Action:(UIPanGestureRecognizer *)pan1

{

//    UILabel *label = (UILabel *)[self.viewviewWithTag:100];

    CGPoint p1 = [pan1 locationInView:pan1.view];

    NSLog(@"平移的坐标是:%@",NSStringFromCGPoint(p1));

}

/******************长按手势***********************/

- (void)longPressAction:(UILongPressGestureRecognizer *)longPress

{

    UILabel *label = (UILabel *)[self.viewviewWithTag:100];

    if (longPress.state == UIGestureRecognizerStateBegan) {

        label.text = @"开始长按";

    }elseif (longPress.state == UIGestureRecognizerStateEnded){

        label.text = @"长按结束";

    }

   

}

/******************旋转手势***********************/

- (void)rotationAction:(UIRotationGestureRecognizer *)rota

{

//    UILabel *label = (UILabel *)[self.viewviewWithTag:100];

    //旋转的弧度

    CGFloat r = rota.rotation;

    NSLog(@"旋转的弧度是:%.2f",r);

    NSLog(@"旋转的角度是:%.2f",180 * r / M_PI);

   

}

/******************捏合手势***********************/

- (void)pinchAction:(UIPinchGestureRecognizer *)pinch

 

{

    //获得捏合的比例

    CGFloat scale = pinch.scale;

    pinch.view.transform = CGAffineTransformMakeScale(scale, scale);

}

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI