@fiy-fish
2017-03-23T22:12:28.000000Z
字数 1913
阅读 1250
工作日志
手势识别
手势可以把一个低层级的代码转化为高等级的事件
如果想自定义自己的手势请看自定义手势
手势类型:
基本上系统自带的手势够我们正常开发使用了
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 gesture
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(respondToTapGesture:)];
// Specify that the gesture must be a single tap
tapRecognizer.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上有多个手势