iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用(二)

简介: iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用

三、UIGestureRecognizerDelegate


       前面我们提到过关于手势对象的协议代理,通过代理的回调,我们可以进行自定义手势,也可以处理一些复杂的手势关系,其中方法如下:


//手指触摸屏幕后回调的方法,返回NO则不再进行手势识别,方法触发等

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

//开始进行手势识别时调用的方法,返回NO则结束,不再触发手势

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;

//是否支持多时候触发,返回YES,则可以多个手势一起触发方法,返回NO则为互斥

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

//下面这个两个方法也是用来控制手势的互斥执行的

//这个方法返回YES,第一个手势和第二个互斥时,第一个会失效

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);

//这个方法返回YES,第一个和第二个互斥时,第二个会失效

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);

四、点击手势——UITapGestureRecognizer


       点击手势十分简单,支持单击和多次点击,在我们手指触摸屏幕并抬起手指时会进行触发,其中有如下两个属性我们可以进行设置:


//设置点击次数,默认为单击

@property (nonatomic) NSUInteger  numberOfTapsRequired;

//设置同时点击的手指数

@property (nonatomic) NSUInteger  numberOfTouchesRequired;

五、捏合手势——UIPinchGestureRecognizer


       捏合手势是当我们双指捏合和扩张会触发动作的手势,我们可以设置的属性如下:


//设置缩放比例

@property (nonatomic)          CGFloat scale;

//设置捏合速度

@property (nonatomic,readonly) CGFloat velocity;

六、拖拽手势——UIPanGestureRecognzer


       当我们点中视图进行慢速拖拽时会触发拖拽手势的方法。


//设置触发拖拽的最少触摸点,默认为1

@property (nonatomic)          NSUInteger minimumNumberOfTouches;

//设置触发拖拽的最多触摸点

@property (nonatomic)          NSUInteger maximumNumberOfTouches;  

//获取当前位置

- (CGPoint)translationInView:(nullable UIView *)view;            

//设置当前位置

- (void)setTranslation:(CGPoint)translation inView:(nullable UIView *)view;

//设置拖拽速度

- (CGPoint)velocityInView:(nullable UIView *)view;

七、滑动手势——UISwipeGestureRecognizer


       滑动手势和拖拽手势的不同之处在于滑动手势更快,拖拽比较慢。


//设置触发滑动手势的触摸点数

@property(nonatomic) NSUInteger                        numberOfTouchesRequired;

//设置滑动方向

@property(nonatomic) UISwipeGestureRecognizerDirection direction;  

//枚举如下

typedef NS_OPTIONS(NSUInteger, UISwipeGestureRecognizerDirection) {

   UISwipeGestureRecognizerDirectionRight = 1 << 0,

   UISwipeGestureRecognizerDirectionLeft  = 1 << 1,

   UISwipeGestureRecognizerDirectionUp    = 1 << 2,

   UISwipeGestureRecognizerDirectionDown  = 1 << 3

};

八、旋转手势——UIRotationGestureRecognizer


       进行旋转动作时触发手势方法。


//设置旋转角度

@property (nonatomic)          CGFloat rotation;

//设置旋转速度

@property (nonatomic,readonly) CGFloat velocity;

九、长按手势——UILongPressGestureRecognizer


       进行长按的时候触发的手势方法。


//设置触发前的点击次数

@property (nonatomic) NSUInteger numberOfTapsRequired;    

//设置触发的触摸点数

@property (nonatomic) NSUInteger numberOfTouchesRequired;

//设置最短的长按时间

@property (nonatomic) CFTimeInterval minimumPressDuration;

//设置在按触时时允许移动的最大距离 默认为10像素

@property (nonatomic) CGFloat allowableMovement;

目录
相关文章
|
1月前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
21 1
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
88 3
|
2月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
36 4
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
8天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
12 0
|
23天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。
|
2月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
198 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
39 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
93 2