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);
}