iOS(五)触摸事件以及手势

在Cocoa中,代表触摸对象的类是UITouch,当用户触摸屏幕后,就会产生相应事件,触摸事件在屏幕上有一个周期,触摸开始,触摸点移动,触摸结束,中途取消

UITouch中还包含以下(CGPoint)locationInView:(UIView *)view,返回一个CGPoint类型的值,表示触摸点在view视图的位置,

(CGPoint)previousLocationInView:(UIView *)view,该方法记录了前一个坐标值

下面三个事件方法是手指触摸到屏幕就会触发的方法

//UITouch事件
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NSLog(@"触摸开始");
if(event.allTouches.count==1)
for (UITouch *touch in event.allTouches) {
source =[touch locationInView:self.view];
}
}

-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NSLog(@"moving");
}

-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NSLog(@"触摸结束");
}
另一个事件触摸取消在类似触摸过程中突然来电打断就会触发

-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NSLog(@"触摸cancel");
}


对于触摸在iOS开发中暂时还未遇到过,

但是手势接触的比较多,所以本次主要讲手势,手势主要分点击,放大缩小,向不同方向滑动


点击(涉及到几根手指,几次点击屏幕)

UITapGestureRecognizer *finger=[[UITapGestureRecognizer alloc]init];
[finger setNumberOfTouchesRequired:n];//设置需要n个手指才能触发

[finger setNumberOfTapsRequired:n];//设置需要触碰n下
// 手势触发条件
[finger addTarget:self action:@selector(finger)];
// 添加手势
[self.view addGestureRecognizer:finger];

两个手指放大or缩小(当进行放大缩小时,会返回一个scale值,>1是放大 <1是缩小,图片的放大缩小就是基于这个手势)

//放大缩小手势
    UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]init];
    [pinch addTarget:self action:@selector(pinch:)];
    [self.view addGestureRecognizer:pinch];

判断是放大还是缩小

-(void)pinch:(UIPinchGestureRecognizer *)pinch{
    if(pinch.scale>1){
    NSLog(@"拉大");
    label.text=@"拉大";
    }
    else{
    NSLog(@"缩小");
    label.text=@"缩小";
    }
}

向不同方向滑动的手势

//滑动手势向上
    UISwipeGestureRecognizer *swipeup=[[UISwipeGestureRecognizer alloc]init];
    [swipeup setDirection:UISwipeGestureRecognizerDirectionUp];
    [swipeup addTarget:self action:@selector(swipeup:)];
    [self.view addGestureRecognizer:swipeup];


<span style="font-size:14px;">-(void)swipeup:(UISwipeGestureRecognizer *)swipe{
    CGPoint point=[swipe locationInView:[self view]];
    
    label.text=[NSString stringWithFormat:@"向上滑动:%f,%f",point.x,point.y];
    if(swipe.state==UIGestureRecognizerStateBegan){
        source=[swipe locationInView:self.view];
    }
    else if(swipe.state==UIGestureRecognizerStateEnded){
        distance=[swipe locationInView:self.view];
        float juli;
        CGFloat x=(source.x-distance.x);
        CGFloat y=(source.y-distance.y);
        juli=sqrt((x*x)+(y*y));
        NSLog(@"%f",juli);
        dislabel.text=[NSString stringWithFormat:@"单指滑动距离:%f",juli];
    }
}</span>



虽然比较基础,但其实iOS很多复杂的都是基于基础


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值