@fiy-fish
2017-03-23T14:12:28.000000Z
字数 1913
阅读 1474
工作日志
手势识别
手势可以把一个低层级的代码转化为高等级的事件
如果想自定义自己的手势请看自定义手势
手势类型:
基本上系统自带的手势够我们正常开发使用了
iOS7之后,如果使用屏幕底部向上轻扫手势, 系统会调用出控制中心,如果系统判断后不调用控制中心,则需要一定的时间来响应轻扫手势
手势绑定在view上,一个view可以响应多个手势
手势在view之前响应触摸事件。
手势可以触发事件
单个手势 比如tap,轻击一下 就发一条消息给目标
持续手势,比如 pin,(放大缩小) 会持续给目标发送消息
手势响应事件的过程
拖一个手势到指定的view上
可以像button 一样 拖动interface Builder 上的手势到程序中 创建一个事件
也可以 拖interface Builder 上的手势创建一个手势属性。
如下面的代码
@interface APLGestureRecognizerViewController ()@property (nonatomic, strong) IBOutlet UITapGestureRecognizer *tapRecognizer;@end@implementation- (IBAction)displayGestureForTapRecognizer:(UITapGestureRecognizer *)recognizer// Will implement method later...}@end
代码初始化一个手势,添加一个对象,并给手势选择一个事件 在这个对象汇总去实现这个事件,手势的对象一般都是视图控制器viewController
绑定手势到一个view上。
手势创建一般都是在viewDidLoad 方法中
代码如下:
- (void)viewDidLoad {[super viewDidLoad];// Create and initialize a tap gestureUITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(respondToTapGesture:)];// Specify that the gesture must be a single taptapRecognizer.numberOfTapsRequired = 1;// Add the tap gesture recognizer to the view[self.view addGestureRecognizer:tapRecognizer];// Do any additional setup after loading the view, typically from a nib}
响应非持续性手势 相关代码 请下载示例
如:轻击 轻扫 手势
响应持续性手势 相关代码 请下载示例
如: 放大缩小手势 旋转手势
我们可以根据手势的状态来做响应的操作 有关手势状态请看:Gesture Recognizers Operate in a Finite State Machine.
手势如何响应交互
手势事件和其他触摸事件捕获的区别
手势识别的过程
非连续手势: 由状态 possible 到 状态 Recognized 过程结束
连续性手势: -> 开始状态 UIGestureRecognizerStatePossibl
-> 第一次识别 UIGestureRecognizerStateBegan
-> 手指滑动 UIGestureRecognizerStateChanged
-> 最后一根手指离开屏幕 UIGestureRecognizerStateEnded 识别结束
-> 或者 手指非法移动 UIGestureRecognizerStateCancelled 识别结束
view上有多个手势
