iOS 手势

1.实现iOS手势分类

1》�iOS系统在3.2以前用的是UIResponder
2》iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类。手势识别UIGestureRecognizer类是个抽象类

2.iOS大概的手势种类

�1.点击(Tap)
�点击作为最常用手势,用于按下或选择一个控件或条目(类似于普通的鼠标点击)

�2.拖动(Drag) 拖动用于实现一些页面的滚动,以及对控件的移动功能。

�3.滑动(Flick) 滑动用于实现页面的快速滚动和翻页的功能。

�4.横扫(Swipe) �横扫手势用于激活列表项的快捷操作菜单

�5.双击(DoubleTap)
�双击放大并居中显示图片,或恢复原大小(如果当前已经放大)。同时,双击能够激活针对文字编辑菜单。

�6.放大(Pinch open)
�放大手势可以实现以下功能:打开订阅源,打开文章的详情。在照片查看的时候,放大手势也可实现放大图片的功能。

�7.缩小(Pinch close)
�缩小手势,可以实现与放大手势相反且对应的功能的功能:关闭订阅源退出到首页,关闭文章退出至索引页。在照片查看的时候,缩小手势也可实现缩小图片的功能。

�8.长按(Touch &Hold)
�在我的订阅页,长按订阅源将自动进入编辑模式,同时选中手指当前按下的订阅源。这时可直接拖动订阅源移动位置。
�针对文字长按,将出现放大镜辅助功能。松开后,则出现编辑菜单。
�针对图片长按,将出现编辑菜单。

�9.摇晃(Shake)
摇晃手势,将出现撤销与重做菜单。主要是针对用户文本输入的。

3.UIGestureRecognizer子类

�UITapGestureRecognizer((点一下)
UIPinchGestureRecognizer(缩放)
UIRotationGestureRecognizer(旋转)
UISwipeGestureRecognizer(滑动,快)
UIPanGestureRecognizer(拖移,慢)
UILongPressGestureRecognizer
UIScreenEdgePanGestureRecognizer(屏幕边缘平移手势)

4.实现手势代码

1.[UITapGestureRecognizer] (点击)
UITapGestureRecognizer   *tapGes  =[[UITapGestureRecognizeralloc]  initWithTarget:self action:@selector(handleTap:)];
[imageV addGestureRecognizer:tapGes];
//单机方法 singleRecognizer.numberOfTapsRequired = 1;
//双击方法 doubleRecognizer.numberOfTapsRequired = 2
//双击失败执行单击[singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];

2.�[UIPinchGestureRecognizer](缩放)
UIPinchGestureRecognizer   *pinchGes = [[UIPinchGestureRecognizeralloc]    initWithTarget: self
action:@selector(handlePinch:)];
[imageVaddGestureRecognizer:pinchGes];
- (void) handlePinch:(UIPinchGestureRecognizer*) pinch{
if (pinch.state==UIGestureRecognizerStateChanged) {
//取到缩放比率
CGFloatscale = pinch.scale;
//缩放
pinch.view.transform=CGAffineTransformMakeScale(scale, scale);
}
else if(pinch.state==UIGestureRecognizerStateEnded) {
[UIViewanimateWithDuration:.5animations:^{
pinch.view.transform=CGAffineTransformIdentity;
}];
}
}

3.�[UIRotationGestureRecognizer](旋转)
//添加旋转手势
UIRotationGestureRecognizer*rotationGes = [[UIRotationGestureRecognizeralloc] initWithTarget:self action:@selector(handleRotation:)];
[imageVaddGestureRecognizer:rotationGes];
- (void) handleRotation:(UIRotationGestureRecognizer*) rotation{
if(rotation.state==UIGestureRecognizerStateChanged) {
//取到弧度
CGFloatangle = rotation.rotation;
//正在旋转
rotation.view.transform=CGAffineTransformMakeRotation(angle);
}else if(rotation.state==UIGestureRecognizerStateEnded) {
//还原
[UIViewanimateWithDuration:.5animations:^{
rotation.view.transform=CGAffineTransformIdentity;
}];
}
}


4.UISwipeGestureRecognizer [(滑动,快)]
//轻扫手势
UISwipeGestureRecognizer*swipe =[[UISwipeGestureRecognizeralloc]   initWithTarget:self action:@selector(swipeView:)];
**//设置属性,swipe也是有两种属性设置手指个数及轻扫方向**
swipe.numberOfTouchesRequired=1;
***//设置轻扫方向(默认是从左往右)***
***//direction是一个枚举值有四个选项,我们可以设置从左往右,从右往左,从下往上以及从上往下***
***//设置轻扫方向(默认是从左往右)***
swipe.direction=UISwipeGestureRecognizerDirectionLeft;
[imageVaddGestureRecognizer:swipe];


�5.[UIPanGestureRecognizer](拖移,慢)
//添加拖动手势
UIPanGestureRecognizer*panGes = [[UIPanGestureRecognizeralloc] initWithTarget:self action:@selector(handlePan1:)];
[imageVaddGestureRecognizer:panGes];
-  (void) handlePan1:(UIPanGestureRecognizer*)pan {
//手指所在的坐标
CGPointpoint = [pan locationInView:self.view];_view.center= point;
}


6.�[UILongPressGestureRecognizer]
// 长按
UILongPressGestureRecognizer*longPress = [[UILongPressGestureRecognizeralloc] initWithTarget:self action:@selector(longPressAction:)];
//设置最短时间
longPress.minimumPressDuration=1;
[imgView addGestureRecognizer:longPress];
-(void)longPressAction:(UILongPressGestureRecognizer*)longPress{
if (longPress.state==UIGestureRecognizerStateBegan) {
NSLog(@"长按开始");}
else if(longPress.state==UIGestureRecognizerStateEnded){NSLog(@"长按结束");
}}

Motion摇晃

//让当前对象成为第一响应者
-(BOOL)canBecomeFirstResponder{ 
          return YES;
}
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
          NSLog(@"摇一摇开始");
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
          NSLog(@"摇一摇结束");
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容

  • 昨晚就开始打算 如果今天有空就研究一下 图片的放大缩小以及旋转功能是怎么实现的在没开始之前 我的思路是:对于放大缩...
    小沛2016阅读 932评论 2 1
  • 在儿时 爷爷背着我去看戏 我总是不停的折腾 打搅了一场精彩的演出 长大后 跟着爷爷去看戏 青砖青瓦的舞台 上演着古...
    布瓜先生阅读 298评论 0 3
  • 祥林嫂捐了门槛死后就能做个安全的女鬼不会有死鬼男人争夺就会跟定贺老六拥有一间自己的鬼屋就会你耕灵田,我织尸布你挑忘...
    伊甸陨石阅读 840评论 3 2
  • 朋友圈是个微缩的世界,观尽人生百态,却有时茫然何以过好这一生。 朋友公司组织去日本旅游上传了不少美食风...
    牵线木偶局外人阅读 169评论 0 0
  • /*iOS归档小结:1.归档实际上就是一种文件保存的形式,几乎所有的对象都能够被归档存储。它使用NSKeyedAr...
    彬至睢阳阅读 883评论 0 0