Gesture(手势)
手势是有规律的触摸,iOS提供了UIGestureRecognizer用于监测手势类,它是一个抽象类,有多个子类,代表具体的手势;
delegate 代理
-(BOOL)gestureRecognizer:(UIGestureRecognizer *) gestureRecongizer shouldReceiveTouch:(UITouch *) touch // 是否响应此次手势事件;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *) gesture1 shouldRecognizeSimultaneoullyWithGestureRecognizer:(UIGestureRecognizer*) gestureOther; // 是否能够同时响应多个手势;
1.UITapGestureRecognizer
轻拍手势,轻拍一个视图的时候触发
numberOfTouchesRequired // 需要的手指数量个数;
numberOfTapsRequired // 需要连续轻拍次数;
2.UILongPressGestureRecognizer
长按事件
minimumPressDuration // 最小触发长按的时长,单位秒;
allowableMovement = 50 ; // 手指长按事件响应前允许手指移动的偏移量;
处理长按事件回调的时候需要判断 Recognizer的state属性,如果为UIGestureRecognizerStateBegan表示事件被触发,在事件触发完成之后会再触发一次回调事件;
3.UISwpieGestureRecognizer
轻扫事件
direction // 只对指定的轻扫方向有监测作用,默认为向右;
4.UIPanGestureRecognizer
拖动手势,手指在视图上拖动的时候一直触发事件;
-(CGPoint)translationInView:(UIView *)view; // 移动的偏移量(基于手指起始点的偏移量)
[recoginizer setTranslation:CGPointZero inView:recoginizer.view]; // 将偏移量清零
-(void)panAction:(id)sender
{
UIPanGestureRecognizer *rec = sender;
UIView *view = rec.view;
CGPoint point = [rec translationInView:view];
// change view's transform
// [rec setTranslation:(CGPoint) inView:(UIView *)];
rec.view.transform = CGAffineTransformMakeTranslation(point.x, point.y);
}
5.UIPinchGestureRecognizer
捏合手势,手指聚中或者外扩时触发
scale; // 缩放比例(手指距离增大,scale增大) // scale = 1.0;
-(void)pinchAction:(id)sender
{
UIPinchGestureRecognizer *rec4 =sender;
rec4.view.transform = CGAffineTransformMakeScale(rec4.scale, rec4.scale);
}
6.UIRotationGestureRecognizer
旋转手势
rotation; // 旋转的弧度
gesture.rotation = 0;
// 将旋转的弧度清0(不是将view旋转的弧度清0,而是将当前手势旋转的弧度清0);
-(void)rotateAction:(id)sender
{
UIRotationGestureRecognizer *rec = sender;
rec.view.transform = CGAffineTransformMakeRotation(rec.rotation);
}