您的位置:首页 > 移动开发 > IOS开发

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

2016-04-29 10:12 323 查看
在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很多复杂的都是基于基础
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: