// add gesture recognizers to the image view
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];
[doubleTap setNumberOfTapsRequired:2];
[twoFingerTap setNumberOfTouchesRequired:2];
[imageView addGestureRecognizer:singleTap];
[imageView addGestureRecognizer:doubleTap];
[imageView addGestureRecognizer:twoFingerTap];
[singleTap release];
[doubleTap release];
[twoFingerTap release];
#pragma mark TapDetectingImageViewDelegate methods
- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {
// single tap does nothing for now
- NSLog(@"Swipe received.");
- if (recognizer.direction==UISwipeGestureRecognizerDirectionDown) {
- NSLog(@"swipe down");
- //执行程序
- }
- if (recognizer.direction==UISwipeGestureRecognizerDirectionUp) {
- NSLog(@"swipe up");
- //执行程序
- }
- if (recognizer.direction==UISwipeGestureRecognizerDirectionLeft) {
- NSLog(@"swipe left");
- //执行程序
- }
- if (recognizer.direction==UISwipeGestureRecognizerDirectionRight) {
- NSLog(@"swipe right");
- //执行程序
}
- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {
// double tap zooms in
float newScale = [imageScrollView zoomScale] * ZOOM_STEP;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
[imageScrollView zoomToRect:zoomRect animated:YES];
}
- (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer {
// two-finger tap zooms out
float newScale = [imageScrollView zoomScale] / ZOOM_STEP;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
[imageScrollView zoomToRect:zoomRect animated:YES];
}
UIGestureRecognizer的衍生类別有以下几种:
- UITapGestureRecognizer 点一下
- UIPinchGestureRecognizer 二指往内或往外拨动
- UIRotationGestureRecognizer 旋转
- UISwipeGestureRecognizer 滑动,快速移动
- UIPanGestureRecognizer 拖移,慢速移动
- UILongPressGestureRecognizer 长按