iOS手势-UIGestureRecognizer
原文链接
1. UIGestureRecognizer
- 父类是NSObject
- 利用手势识别器---UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势
- UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势,详见其子类介绍
- 一个手势只能支持一个方向
- 默认只支持一个手势,若要实现多个手势,需要设置手势代理,遵守<UIGestureRecognizerDelegate>,并实现
shouldRecognizeSimultaneouslyWithGestureRecognizer
,返回YES。
2. 手势识别的状态
手势状态 含义 UIGestureRecognizerStatePossible 没有触摸事件发生,所有手势识别的默认状态 UIGestureRecognizerStateBegan 一个手势已经开始但尚未改变或者完成时 UIGestureRecognizerStateChanged 手势状态改变 UIGestureRecognizerStateEnded 手势完成 UIGestureRecognizerStateCancelled 手势取消,恢复至Possible状态 UIGestureRecognizerStateFailed 手势失败,恢复至Possible状态 UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded 识别到手势识别 3. UIGestureRecognizer属性
// 手势状态 @property(nonatomic,readonly) UIGestureRecognizerState state;
//手势代理
@property(nullable,nonatomic,weak) id <UIGestureRecognizerDelegate> delegate;// 手势是否可用(默认可用)
// 当前在识别手势时不能修改手势是否可用
@property(nonatomic, getter=isEnabled) BOOL enabled;// 手势的视图
@property(nullable, nonatomic,readonly) UIView *view;@property(nonatomic) BOOL cancelsTouchesInView;
@property(nonatomic) BOOL delaysTouchesBegan;
@property(nonatomic) BOOL delaysTouchesEnded;@property(nonatomic, copy) NSArray<NSNumber *> *allowedTouchTypes
@property(nonatomic, copy) NSArray<NSNumber *> *allowedPressTypes4. UIGestureRecognizer方法
// 初始化手势,直接用initWithTarget就好,另外两个忽略 // -(void)handleGesture; // -(void)handleGesture:(UIGestureRecognizer*)gestureRecognizer; - (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action
// 增加监听和移除监听
- (void)addTarget:(id)target action:(SEL)action;
- (void)removeTarget:(nullable id)target action:(nullable SEL)action; //target为nil,则移除所有相同方法名的方法
// 获取touch的位置
- (CGPoint)locationInView:(nullable UIView*)view;
// 获取locations中的touches的数量
- (NSUInteger)numberOfTouches;
// 获取特定角标的touch的位置
(CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(nullable UIView*)view;
(void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;
@end
5. UIGestureRecognizer的代理--UIGestureRecognizerDelegate
// 是否允许触发当前手势 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
// Simultaneously:同时 sɪml’teɪnɪəslɪ
// 是否允许同时支持多个手势- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
// 是否接收触摸手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
// 是否接收按压手势
(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePress:(UIPress *)press;
(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
@end
6. UIGestureRecognizer的子类
6.1. 点按手势
6.2. 捏合手势——用于缩放
6.3. 拖动手势
6.4. 轻扫手势
6.5. 旋转手势
6.6. 长按手势
iOS手势-UIGestureRecognizer相关推荐
- 使用iOS手势UIGestureRecognizer
UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势.UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势 ...
- iOS 手势UIGestureRecognizer
在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureR ...
- IOS手势 UIGestureRecognizer实践(Swift)
一 Tap轻点 // 双指轻点(需用真机测试)let doubleFingers = UITapGestureRecognizer(target: self, action: #selector(se ...
- IOS开发之手势——UIGestureRecognizer 共存
IOS开发之手势--UIGestureRecognizer 共存 在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded ...
- iOS手势学习UIGestureRecognizer cocos2d 手势推荐
iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer // 长按 UIPanGestu ...
- iOS手势操作简介(三)
监听触摸事件的做法 如果想监听一个view上面的触摸事件,之前的做法是 自定义一个view 实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听view触摸事件,有 ...
- iOS 手势的用法
iOS 手势类 : UIGestureRecognizer(继承于NSObject基类) 继承于UIGestureRecognizer类的有六个子类,分别是: UILongPressGestureRe ...
- swift 实现iOS手势密码、指纹密码、faceID
本博客包含了如何实现iOS手势密码.指纹密码.faceID全步骤,包括了完整的代码. 先附上demo地址https://github.com/Liuyubao/LYBTouchID,支持swift3. ...
- IOS开发之手势—UIGestureRecognizer 共存
在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureR ...
最新文章
- GOF23种设计模式(Design Pattern)总结
- android listview item长按事件,ListView的点击事件,长按事件,数据刷新
- Java黑皮书课后题第7章:7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数。编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值
- CYQ.Data 数据框架 发放V1.5版本源码
- Struts2的简单介绍
- 无心剑英译朱自清《匆匆》
- php获得每个月第一天的时间,PHP获取指定日期所在月的第一天和最后一天几个例子...
- 都说不建议使用递归操作,到底为什么?
- Spring的事务管理难点剖析(5):联合军种作战的混乱
- mysql源码及内核分析,MySQL · 源码阅读 · Secondary Engine
- WIN10卸载搜狗后语言栏仍有残留解决方案
- 数据分析需要学习哪些课程?
- 98城市联合发行全国旅游年票一卡通
- 免费空间如何建设网站?
- poj 1830 高斯消元
- Android dumpsys常用命令
- (接上篇)浮动静态路由主备路径故障倒换实验NQA技术
- 庞加莱 (Jules Henri Poincaré)
- laravel 8控制器获取当前url
- day13_雷神_前端01
热门文章
- 自动化情侣微信早安信息定时推送
- dva的用法_dva基本用法
- android中涉及的字体修改
- 数据库实验--存储过程实验
- java.net.ConnectException: [NACOS HTTP-POST] The maximum number of tolerable server reconnection err
- 苹果手机10秒解除锁屏_苹果密码忘了不想刷机怎么办_苹果手机10秒解除锁屏
- Django使用supervisor管理celery和uwsgi实践记录 uwsgi BACKOFF Exited too quickly (process log may have details)
- ORACLE 金额转大写中文
- springboot实战—BMI体脂计算器-服务器端
- MATLAB----光学之分量振幅反射率和分量振幅透射率