iOS开发-UITapGestureRecognizer手势

简介:

手势在iOS开发中是一个比较常用的功能,不过相对来说大家用的比较少,经常刷网易新闻,上次用了一下捏合手势才发现可以调整字体大小。昨天看到一个介绍摇一摇这个功能的,没看到之前一直都觉得摇一摇是微信的专有的,昨天测试了一下知乎,感觉像发现了一个新大陆,随便截了图,效果如下:

扯的有点远了,很多应用的很多功能其实对于大多数而言是没有用到的,不过作为程序员我们还是应该多研究一下。

基础概念

常见的手势有六种,如下图所示:

UITapGestureRecognizer(点击,轻触摸)、UIPinchGestureRecognizer(二指往內或往外拨动,捏合手势)、UIPanGestureRecognizer(拖移)、UISwipeGestureRecognizer(滑动,快速移动)、UIRotationGestureRecognizer(旋转)和UILongPressGestureRecognizer(长按),由于微信的缘故应该大多数人对长按比较熟悉,Tap点击也是高频用到的手势。

苹果官方给出了Tap和Pinch的手势的效果图,其他的效果可以私下试一试:

Demo实战

由于有六种手势,基本上大同小异,其中一种会实战,其他的应该也没问题,接下来的的介绍都是以UITapGestureRecognizer为基准的,先来个简单的单击手势:

1
2
3
4
UITapGestureRecognizer *oneTapGestureReognizer = [[UITapGestureRecognizer alloc] initWithTarget: self  action: @selector (oneTapGestureRecognizer:)];
oneTapGestureReognizer.delegate =  self ;
oneTapGestureReognizer.numberOfTapsRequired = 1; //触摸次数
[ self .view addGestureRecognizer:oneTapGestureReognizer];

响应事件:

1
2
3
4
-( void )oneTapGestureRecognizer:(UITapGestureRecognizer *)tapGestureRecognizer{
     UIAlertView  *alertView=[[UIAlertView alloc]initWithTitle:@ "单指单击"  message:@ "iOS技术交流群:228407086"  delegate: self  cancelButtonTitle:@ "确定"  otherButtonTitles:@ "取消" nil ];
     [alertView show];
}

效果如下:

单击手势显得稍微有点弱,我们可以继续修改手指和触摸的次数,来个双指双击看下代码:

1
2
3
4
5
UITapGestureRecognizer *twoTapGestureReognizer = [[UITapGestureRecognizer alloc] initWithTarget: self  action: @selector (twoTapGestureRecognizer:)];
   twoTapGestureReognizer.delegate =  self ;
   twoTapGestureReognizer.numberOfTouchesRequired =2; //手指数
   twoTapGestureReognizer.numberOfTapsRequired=2; //触摸次数
   [ self .view addGestureRecognizer:twoTapGestureReognizer];

响应事件如下:

1
2
3
4
-( void )twoTapGestureRecognizer:(UITapGestureRecognizer *)tapGestureRecognizer{
     UIAlertView  *alertView=[[UIAlertView alloc]initWithTitle:@ "手势点击"  message:@ "iOS技术交流群:228407086"  delegate: self  cancelButtonTitle:@ "确定"  otherButtonTitles:@ "取消" nil ];
     [alertView show];
}

效果就不需要截图了,基本上UITapGestureRecognizer点击差不多就是设置一下手指数量和触摸次数,不过有的时候会出现同一个View上需要手势,按钮需要点击,就是事件被覆盖,需要通过UIGestureRecognizerDelegate中的方法防止事件覆盖。

1
2
3
4
5
6
7
-( BOOL )gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
     //设置为NO则不响应
     if  ([ NSStringFromClass ([touch.view  class ]) isEqualToString:@ "UILabel" ]) {
         return  NO ;
     }
     return   YES ;
}

 上面的代码是为了让截图上的标签不响应触摸的事件,标签其实默认的是没有点击响应事件的,我们可以在标签上面加入触摸事件:

1
2
3
4
5
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(10, 44, 380, 30)];
   label.text=@ "原文地址:http://www.cnblogs.com/xiaofeixiang" ;
   [label setUserInteractionEnabled: YES ];
   [label addGestureRecognizer:tapGestureRecognizer];
   [ self .view addSubview:label];

响应事件:

1
2
3
4
5
-( void )tapJumpLink:(UITapGestureRecognizer *)tapGestureRecognizer{
     UILabel  *label=(UILabel *)tapGestureRecognizer.view;
     NSURL   *url=[[ NSURL  alloc]initWithString:[label.text substringFromIndex:5]];
     [[UIApplication sharedApplication] openURL:url];
}

最终效果如下:

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4584175.html,如需转载请自行联系原作者

相关文章
|
27天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
83 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
38 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
89 2
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
42 1
|
3月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
52 1
|
1天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
8 0
|
16天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
181 2
|
3月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
40 4