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