iOS Gesture 手势

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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章