(转)iOS手势UIGestureRecognizer

UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了全部手势的基本行为,它有下面一些子类用于处理具体的手势: 

    一、拍击UITapGestureRecognizer (任意次数的拍击)  
    二、向里或向外捏UIPinchGestureRecognizer (用于缩放)  
    三、摇动或者拖拽UIPanGestureRecognizer  
    四、擦碰UISwipeGestureRecognizer (以任意方向)  
    五、旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
    六、长按UILongPressGestureRecognizer 

对于不一样类型的手势识别器,具备不一样的配置属性。好比UITapGestureRecognizer,能够配置拍击次数。界面接收到手势以后,能够发送一个消息,用于处理响应手势动做后的任务。固然,不一样的手势识别器,发送的消息方法也会有所不一样。ui

[代码] 一个手指,拍击两次手势

// 建立一个手势识别器 UITapGestureRecognizer *oneFingerTwoTaps = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease]; // Set required taps and number of touches [oneFingerTwoTaps setNumberOfTapsRequired:2]; [oneFingerTwoTaps setNumberOfTouchesRequired:1]; // Add the gesture to the view [[self view] addGestureRecognizer:oneFingerTwoTaps]; 消息方法oneFingerTwoTaps - (void)oneFingerTwoTaps { NSLog(@"Action: One finger, two taps"); }

[代码] 两个手指,拍击两次手势

UITapGestureRecognizer *twoFingersTwoTaps = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersTwoTaps)] autorelease]; [twoFingersTwoTaps setNumberOfTapsRequired:2]; [twoFingersTwoTaps setNumberOfTouchesRequired:2]; [[self view] addGestureRecognizer:twoFingersTwoTaps]; 消息方法twoFingersTwoTaps - (void)twoFingersTwoTaps { NSLog(@"Action: Two fingers, two taps"); } 

[代码] 一个手指向上、向下擦碰手势

// 向上擦碰 UISwipeGestureRecognizer *oneFingerSwipeUp = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeUp:)] autorelease]; [oneFingerSwipeUp setDirection:UISwipeGestureRecognizerDirectionUp]; [[self view] addGestureRecognizer:oneFingerSwipeUp]; - (void)oneFingerSwipeUp:(UISwipeGestureRecognizer *)recognizer { CGPoint point = [recognizer locationInView:[self view]]; NSLog(@"Swipe up - start location: %f,%f", point.x, point.y); } // 向下擦碰 UISwipeGestureRecognizer *oneFingerSwipeDown = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeDown:)] autorelease]; [oneFingerSwipeDown setDirection:UISwipeGestureRecognizerDirectionDown]; [[self view] addGestureRecognizer:oneFingerSwipeDown]; - (void)oneFingerSwipeDown:(UISwipeGestureRecognizer *)recognizer { CGPoint point = [recognizer locationInView:[self view]]; NSLog(@"Swipe down - start location: %f,%f", point.x, point.y); }

[代码] 旋转手势

UIRotationGestureRecognizer *twoFingersRotate = [[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersRotate:)] autorelease]; [[self view] addGestureRecognizer:twoFingersRotate]; - (void)twoFingersRotate:(UIRotationGestureRecognizer *)recognizer { // Convert the radian value to show the degree of rotation NSLog(@"Rotation in degrees since last change: %f", [recognizer rotation] * (180 / M_PI)); }

[代码] 向里或向外捏的手势

UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)] autorelease]; [[self view] addGestureRecognizer:twoFingerPinch]; - (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer { NSLog(@"Pinch scale: %f", recognizer.scale); }
相关文章
相关标签/搜索