6.18 Touch 手势
来源:互联网 发布:指甲油品牌知乎 编辑:程序博客网 时间:2024/06/07 23:44
1,左滑
2,右滑
4,双击
5,当双击手势失败时,判断为单击手势
6,拖拽
7,缩放
8,旋转
9,长按
10,滑动
11,点击
12,拖拽
13,缩放
14,旋转
15,长按
//// UIGestureRecognizerViewController.m// demotest//#import "UIGestureRecognizerViewController.h"#import <MediaPlayer/MediaPlayer.h>@interface UIGestureRecognizerViewController () { UIView *_gestureView; UILabel *_gestureDisplay;}- (void)initializeUserInterface;- (void)processgestureReconizer:(UIGestureRecognizer *)gesture;- (void)positionAnimationWithDirection:(UISwipeGestureRecognizerDirection)direction;@end@implementation UIGestureRecognizerViewController- (id)init { self = [super init]; if (self) { self.title = @"UIGestureRecognizer"; } return self;}- (void)dealloc { [_gestureView release]; [_gestureDisplay release]; [super dealloc];}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. [self initializeUserInterface];}- (void)initializeUserInterface { self.view.backgroundColor = [UIColor whiteColor]; _gestureView = [[UIView alloc] init]; _gestureView.bounds = CGRectMake(0, 0, 200, 200); _gestureView.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds)); _gestureView.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0]; _gestureView.layer.borderColor = [UIColor blackColor].CGColor; _gestureView.layer.borderWidth = 1.0; [self.view addSubview:_gestureView]; _gestureDisplay = [[UILabel alloc] init]; _gestureDisplay.bounds = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 44); _gestureDisplay.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMinY(self.view.bounds) + 100); _gestureDisplay.textAlignment = NSTextAlignmentCenter; _gestureDisplay.font = [UIFont systemFontOfSize:25]; _gestureDisplay.backgroundColor = [UIColor clearColor]; [self.view addSubview:_gestureDisplay]; // 左滑 UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; leftSwipe.direction = UISwipeGestureRecognizerDirectionLeft; [self.view addGestureRecognizer:leftSwipe]; [leftSwipe release]; // 右滑 UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; rightSwipe.direction = UISwipeGestureRecognizerDirectionRight; [self.view addGestureRecognizer:rightSwipe]; [rightSwipe release]; // 单击 UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; singleTap.numberOfTapsRequired = 1; [_gestureView addGestureRecognizer:singleTap]; [singleTap release]; // 双击 UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; doubleTap.numberOfTapsRequired = 2; [_gestureView addGestureRecognizer:doubleTap]; [doubleTap release]; // 当双击手势失败时,判断为单击手势 [singleTap requireGestureRecognizerToFail:doubleTap]; // 拖拽 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; [_gestureView addGestureRecognizer:pan]; [pan release]; // 缩放 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; [_gestureView addGestureRecognizer:pinch]; [pinch release]; // 旋转 UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; [_gestureView addGestureRecognizer:rotation]; [rotation release]; // 长按 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(processgestureReconizer:)]; longPress.minimumPressDuration = 2.0; [_gestureView addGestureRecognizer:longPress]; [longPress release];}- (void)processgestureReconizer:(UIGestureRecognizer *)gesture { // 滑动 if ([gesture isKindOfClass:[UISwipeGestureRecognizer class]]) { UISwipeGestureRecognizer *swipe = (UISwipeGestureRecognizer *)gesture; _gestureDisplay.text = swipe.direction == UISwipeGestureRecognizerDirectionLeft ? @"左滑" : @"右滑"; [self positionAnimationWithDirection:swipe.direction]; } // 点击 else if ([gesture isKindOfClass:[UITapGestureRecognizer class]]) { UITapGestureRecognizer *tap = (UITapGestureRecognizer *)gesture; _gestureDisplay.text = tap.numberOfTapsRequired == 1 ? @"单击" : @"双击"; _gestureView.transform = CGAffineTransformIdentity; } // 拖拽 else if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]) { _gestureDisplay.text = @"拖拽手势"; UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)gesture; static CGPoint startCenter; if (pan.state == UIGestureRecognizerStateBegan) { startCenter = _gestureView.center; } else if (pan.state == UIGestureRecognizerStateChanged) { // 此处必须从self.view中获取translation,因为translation和view的transform属性挂钩,若transform改变了则translation也会变 CGPoint translation = [pan translationInView:self.view]; _gestureView.center = CGPointMake(startCenter.x + translation.x, startCenter.y + translation.y); } else if (pan.state == UIGestureRecognizerStateEnded) { startCenter = CGPointZero; } } // 缩放 else if ([gesture isKindOfClass:[UIPinchGestureRecognizer class]]) { _gestureDisplay.text = @"缩放手势"; UIPinchGestureRecognizer *pinch = (UIPinchGestureRecognizer *)gesture; static CGFloat startScale; if (pinch.state == UIGestureRecognizerStateBegan) { startScale = pinch.scale; } else if (pinch.state == UIGestureRecognizerStateChanged) { CGFloat scale = (pinch.scale - startScale)/2 +1; NSLog(@"%f",scale); _gestureView.transform = CGAffineTransformScale(_gestureView.transform, scale, scale); startScale = pinch.scale; } else if (pinch.state == UIGestureRecognizerStateEnded) { startScale = 1; } } // 旋转 else if ([gesture isKindOfClass:[UIRotationGestureRecognizer class]]) { _gestureDisplay.text = @"旋转手势"; UIRotationGestureRecognizer *rotate = (UIRotationGestureRecognizer *)gesture; static CGFloat startRotation; if (rotate.state == UIGestureRecognizerStateBegan) { startRotation = rotate.rotation; } else if (rotate.state == UIGestureRecognizerStateChanged) { CGFloat rotation = (rotate.rotation - startRotation) / 2; _gestureView.transform = CGAffineTransformRotate(_gestureView.transform, rotation); startRotation = rotate.rotation; } else if (rotate.state == UIGestureRecognizerStateEnded) { startRotation = 0; } } // 长按 else if ([gesture isKindOfClass:[UILongPressGestureRecognizer class]] && gesture.state == UIGestureRecognizerStateBegan) { _gestureDisplay.text = @"长按手势"; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"长按手势" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show]; [alert release]; }}- (void)positionAnimationWithDirection:(UISwipeGestureRecognizerDirection)direction { CGPoint center = direction == UISwipeGestureRecognizerDirectionLeft ? CGPointMake(CGRectGetMinX(self.view.bounds) + CGRectGetMidX(_gestureView.bounds), CGRectGetMidY(_gestureView.frame)) : CGPointMake(CGRectGetMaxX(self.view.bounds) - CGRectGetMidX(_gestureView.bounds), CGRectGetMidY(_gestureView.frame)); [UIView animateWithDuration:1.0 animations:^{ _gestureView.center = center; }];}@end
0 0
- 6.18 Touch 手势
- touch手势与触摸
- Android中Touch手势分发
- Android Touch 手势触摸原理
- Using Touch Gestures//使用触摸手势
- 史上最全IOS的touch事件手势使用方法
- iOS 手势影响touch响应事件
- Android的Touch事件处理和手势
- js touch事件 手势滑动事件总结
- 移动设备手势事件库Touch.js
- Magic Touch 中的手势识别(一)
- 在view上响应手势和touch事件
- 第19天 Android Touch事件学习 6 手势识别
- iOS避免使用手势不响应touch event的方法
- javascript 手机手势动作touch触屏原理分析
- touch.js——手机端的操作手势
- 在您的 Mac 上使用 Multi-Touch 手势
- Android基础之Touch事件和手势处理
- linux 信号量之SIGNAL 0
- java开发知识体系
- TCP/IP学习笔记(3)-----------TCP/IP协议详解
- 【BZOJ1043】【HAOI2008】下落的圆盘 计算几何
- C++陪我走过的一年
- 6.18 Touch 手势
- 使用Apache Velocity生成HTML报表
- linux之tar命令
- mysql数据库结构比较工具
- 招对合适的网络营销推广人才
- Xcode6模拟器app和文件在哪儿?
- leetcode--Binary Tree Preorder Traversal
- jQuery跨任何域
- HttpClient的认证(转载)