iOS开发中遇到的手势相关的动作有以下几类(Apple iOS框架提供的简单实现)
UITapGestureRecognizer(包含单击、双击、多次点击等等)
UILongPressGestureRecognizer(长按手势)
UIPanGestureRecognizer(平移手势)
UISwipeGestureRecognizer(手指在屏幕上很快的滑动)
UIPinchGestureRecognizer(手指缩放操作)
UIRotationGestureRecognizer(手指旋转操作)
向指定View添加手势
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanFrom:)];
[self.view addGestureRecognizer:backPanRecognizer];
panRecognizer.maximumNumberOfTouches = 1;
panRecognizer.delegate = self;
从指定view移除手势
[self.view removeGestureRecognizer:backPanRecognizer];
1.点击手势(单击、双击)
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleTap];
singleTap.delegate = self;
[singleTap setNumberOfTapsRequired:1];//1次点击
[singleTap setNumberOfTouchesRequired:1];//1个手指操作
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[self.view addGestureRecognizer:doubleTap];
[doubleTap setDelegate:self];
[doubleTap setNumberOfTapsRequired:2];//2次点击
[doubleTap setNumberOfTouchesRequired:1];//2个手指操作
[singleTap requireGestureRecognizerToFail:doubleTap];//防止双击触发两次单击事件
[doubleTap requireGestureRecognizerToFail:singleTap];
在hadnleSingleTap:和handleDoubleTap:中进行单击和双击事件的处理
2.长按手势
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[self.view addGestureRecognizer:longPressGesture];
[longPressGesture setMinimumPressDuration:1.0f];//最短按下持续时间1秒
在handleLongPress:方法中进行长按时间的处理
3.平移手势
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanFrom:)];
[self.view addGestureRecognizer:backPanRecognizer];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
在handlePanFrom:方法中进行平移手势的处理
-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer{
//拿到手指目前的位置
CGPoint location = [recognizer locationInView:self.view];
CGPoint tranlation = [recognizer translationInView:self.view];
switch (recognizer.state) {
//手指动作开始
case UIGestureRecognizerStateBegan:
// aView.transform = CGAffineTransformIdentity;
break;
//手指动作进行
case UIGestureRecognizerStateChanged:
//监听拖动动作
//如果已经在起始位置则不允许再向右拖动
if (tranlation.x <= 0) {
aView.transform = CGAffineTransformMakeTranslation(tranlation.x, 0);
}
break;
//手指动作结束
case UIGestureRecognizerStateEnded:
{
//得到拖动速度
CGPoint v = [recognizer velocityInView:self.view];
//拖动速度大于500则直接remove视图
if (v.x < -500) {
[aView removeFromSuperView];
} else {
if (tranlation.x <= 0) {
aView.transform = CGAffineTransformMakeTranslation(tranlation.x, 0);
}
//如果手指当前位置大于280像素处,remove视图
if (location.x < 80) {
[aView removeFromSuperView];
} else {
//否则视图回到起始位置
[UIView animateWithDuration:0.3 animations:^{
aView.transform = CGAffineTransformMakeTranslation(0, 0);
}];
}
}
}
break;
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
break;
default:
break;
}
}
4.快速滑动手势
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[self.view addGestureRecognizer:leftSwipe];
[leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];
UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)];
[self.view addGestureRecognizer:rightSwipe];
[rightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
在handleSwipe:方法中处理快速滑动事件
- (void)handleSwipe:(UISwipeGestureRecognizer *)sender
{
switch (sender.direction) {
case UISwipeGestureRecognizerDirectionLeft:
{
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(kDeviceWidth, 0, 120, 160)];
[imgView setImage:[UIImage imageNamed:@"redGirl.jpg"]];
[self.view addSubview:imgView];
[UIView animateWithDuration:0.5f animations:^{
imgView.frame = CGRectMake(0, 0, 120, 160);
} completion:^(BOOL finished) {
}];
}
break;
case UISwipeGestureRecognizerDirectionRight:
{
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(-kDeviceWidth, 0, 120, 160)];
[imgView setImage:[UIImage imageNamed:@"whiteGirl.jpg"]];
[self.view addSubview:imgView];
[UIView animateWithDuration:0.5f animations:^{
imgView.frame = CGRectMake(0, 0, 120, 160);
} completion:^(BOOL finished) {
}];
}
break;
default:
break;
}
}
5.缩放手势和旋转手势,待利用到再补充
分享到:
相关推荐
ios手势图形解锁 。 若需要显示已经连过的点在最上方显示那种的,另外找我要吧
iOS 手势密码,很实用的一个库.zip,GesturePassword 是一个Swift的手势密码库
IOS手势解锁详解 圆的绘画以及连接
iOS全部手势:轻拍、双击、长按、捏合、旋转、拖拽
ios手势ios手势ios手势ios手势ios手势ios手势ios手势ios手势
iOS中各种手势的详细用法,包括冲突手势的区分
ios 手势代码 demo 大全 ios手势代码demo大全
iOS手势返回上一级
iOS手势拖拽旋转缩放图片,实现单指,双指控制
objective-c实现的ios手势解锁代码,比较完整,直接加入工程可用。
iOS 手势密码 源码 纯代码 页面切换 适配 仍有一些未完成的bug 基本功能实现了
IOS应用源码之IOS手势滑动截屏.zip
iOS手势识别入门及使用,包含Pinch、Pan、Swipe、Rotation、Long Press、Tap这6种手势代码,均使用stroryboard,xcode7.0下编译
ios手势解锁相关代码_很好.zip
该程序实现了最基本的ios手势操作,代码比较简单,通俗易懂
IOS手势滑块拖拽功能,可以配置是否弹回界面边框,如有问题请留言联系。
iOS手势 APP主流结构 侧滑展开菜单栏
7种IOS手势Demo,适合想了解IOS 手势如何开发的同学
ios手势解锁,带相交性检测
ios开发手势操作的demo,使用swift写的,如果对ios感兴趣可以看看