只用一个pan手势来代替UISwipegesture的各个方向

本文介绍了一种方法,通过一个pan手势来替代UISwipegesture的上下左右四个方向的操作,详细解释了如何根据手势的速度和方向判断并执行相应的操作。

只用一个pan手势来代替UISwipegesture的各个方向:

-(void)pan:(UIPanGestureRecognizer*)sender
{
typedefNS_ENUM(NSUInteger,UIPanGestureRecognizerDirection){
UIPanGestureRecognizerDirectionUndefined,
UIPanGestureRecognizerDirectionUp,
UIPanGestureRecognizerDirectionDown,
UIPanGestureRecognizerDirectionLeft,
UIPanGestureRecognizerDirectionRight
};
staticUIPanGestureRecognizerDirectiondirection=UIPanGestureRecognizerDirectionUndefined;
switch(sender.state){
caseUIGestureRecognizerStateBegan:{
if(direction==UIPanGestureRecognizerDirectionUndefined){
CGPointvelocity=[sendervelocityInView:recognizer.view];
BOOLisVerticalGesture=fabs(velocity.y)>fabs(velocity.x);
if(isVerticalGesture){
if(velocity.y>0){
direction=UIPanGestureRecognizerDirectionDown;
}else{
direction=UIPanGestureRecognizerDirectionUp;
}
}
else{
if(velocity.x>0){
direction=UIPanGestureRecognizerDirectionRight;
}else{
direction=UIPanGestureRecognizerDirectionLeft;
}
}
}
break;
}
caseUIGestureRecognizerStateChanged:{
switch(direction){
caseUIPanGestureRecognizerDirectionUp:{
[selfhandleUpwardsGesture:sender];
break;
}
caseUIPanGestureRecognizerDirectionDown:{
[selfhandleDownwardsGesture:sender];
break;
}
caseUIPanGestureRecognizerDirectionLeft:{
[selfhandleLeftGesture:sender];
break;
}
caseUIPanGestureRecognizerDirectionRight:{
[selfhandleRightGesture:sender];
break;
}
default:{
break;
}
}
break;
}
caseUIGestureRecognizerStateEnded:{
direction=UIPanGestureRecognizerDirectionUndefined;
break;
}
default:
break;
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值