iOS開發中手勢識別有六種: ui
輕擊手勢(TapGestureRecognizer), spa
輕掃手勢 (SwipeGestureRecognizer), code
長按手勢(LongPressGestureRecognizer), orm
拖動手勢(PanGestureRecognizer), ip
捏合手勢(PinchGestureRecognizer), 開發
旋轉手勢(RotationGestureRecognizer),get
使用手勢很簡單,分爲兩步:animation
建立手勢實例。當建立手勢時,指定一個回調方法,當手勢開始,改變、或結束時,回調方法被調用。it
添加到須要識別的View中。每一個手勢只對應一個View,當屏幕觸摸在View的邊界內時,若是手勢和預約的同樣,那就會回調方法。io
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)]; tapGesture.numberOfTapsRequired = 1; //點擊次數 tapGesture.numberOfTouchesRequired = 1; //點擊手指數 [self.view addGestureRecognizer:tapGesture]; //輕擊手勢觸發方法 -(void)tapGesture:(UITapGestureRecognizer *)sender { //your code }
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture:)]; //設置長按時間 longPressGesture.minimumPressDuration = 0.5; [self.view addGestureRecognizer:longPressGesture]; //長按手勢觸發方法 -(void)longPressGesture:(id)sender { UILongPressGestureRecognizer *longPress = sender; if (longPress.state == UIGestureRecognizerStateBegan) { //your code } } 說明:長按手勢的經常使用狀態以下 開始:UIGestureRecognizerStateBegan 改變:UIGestureRecognizerStateChanged 結束:UIGestureRecognizerStateEnded 取消:UIGestureRecognizerStateCancelled 失敗:UIGestureRecognizerStateFailed
UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGesture:)]; [self.view addGestureRecognizer:rotationGesture]; //旋轉手勢觸發方法 -(void)rotationGesture:(id)sender { UIRotationGestureRecognizer *gesture = sender; if (gesture.state==UIGestureRecognizerStateChanged) { _imageView.transform=CGAffineTransformMakeRotation(gesture.rotation); } if(gesture.state==UIGestureRecognizerStateEnded) { [UIView animateWithDuration:1 animations:^{ _imageView.transform=CGAffineTransformIdentity;//取消形變 }]; } }
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)]; [self.view addGestureRecognizer:panGesture]; //拖動手勢觸發方法 -(void) panGesture:(id)sender { UIPanGestureRecognizer *panGesture = sender; CGPoint movePoint = [panGesture translationInView:self.view]; //your code }
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; //設置輕掃的方向 swipeGesture.direction = UISwipeGestureRecognizerDirectionRight; //向右 [self.view addGestureRecognizer:swipeGesture]; UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; //設置輕掃的方向 swipeGestureLeft.direction = UISwipeGestureRecognizerDirectionLeft; //向左 [self.view addGestureRecognizer:swipeGestureLeft]; //輕掃手勢觸發方法 -(void)swipeGesture:(id)sender { UISwipeGestureRecognizer *swipe = sender; if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { //向左輕掃 } if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { //向右輕掃 } }
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)]; [self.view addGestureRecognizer:pinchGesture]; ////捏合手勢觸發方法 -(void) pinchGesture:(id)sender { UIPinchGestureRecognizer *gesture = sender; //手勢改變時 if (gesture.state == UIGestureRecognizerStateChanged) { self.View.transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale); } }