iOS 手势
2016-04-20 12:59
381 查看
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backgroundTapped)];
[self.view addGestureRecognizer:tap];
_myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
_myView.center = self.view.center;
_myView.backgroundColor = [UIColor redColor];
[self.view addSubview:_myView];
//UIGestureRecognizer 手势识别器,能够把所在的view上的touch事件识别为相应的手势。
//这个类不能直接使用,需要使用它的各种子类。
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognized:)];
//触发手势所需要的点击次数。
tapGesture.numberOfTapsRequired = 1;
//触发手势所需要的触摸点数。
tapGesture.numberOfTouchesRequired = 1;
//把手势识别器添加到view上,view上的touch时间就会被识别。
[_myView addGestureRecognizer:tapGesture];
//触发手势所需要的点击次数。
doubleTapGesture.numberOfTapsRequired = 2;
//触发手势所需要的触摸点数。
doubleTapGesture.numberOfTouchesRequired = 1;
//把手势识别器添加到view上,view上的touch时间就会被识别。
[_myView addGestureRecognizer:doubleTapGesture];
//tapGesture手势必须在doubleTapGesture手势识别失败时才能被识别。
[tapGesture requireGestureRecognizerToFail:doubleTapGesture];
//触发长按手势的按压时间
longPress.minimumPressDuration = 0.5;
//手势触发前最大的允许移动距离。
longPress.allowableMovement = 10;
[_myView addGestureRecognizer:longPress];
[_myView addGestureRecognizer:pinch];
//手势也可以设置代理
rotation.delegate = self;
[_myView addGestureRecognizer:rotation];
[_myView addGestureRecognizer:pan];
}
//当另外一个手势也可能触发时,调用此方法,返回YES,允许同时触发,返回NO不允许同时触发。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
单击手势方法
- (void)tapGestureRecognized:(UITapGestureRecognizer *)gesture{
NSLog(@"点击了");
}
双击手势方法
- (void)doubleTapGestureRecognized:(UITapGestureRecognizer *)gesture{
NSLog(@"双击了");
}
长按手势方法
- (void)longPressGestureRecognized:(UILongPressGestureRecognizer *)gesture{
//gesture.state手势的状态。
if (gesture.state == UIGestureRecognizerStateBegan) {
NSLog(@"长按了");
//菜单控制器,单例类
UIMenuController *mc = [UIMenuController sharedMenuController];
UIMenuItem *redItem = [[UIMenuItem alloc] initWithTitle:@"红色" action:@selector(redItemClick)];
UIMenuItem *greenItem = [[UIMenuItem alloc] initWithTitle:@"绿色" action:@selector(greenItemClick)];
UIMenuItem *blueItem = [[UIMenuItem alloc] initWithTitle:@"蓝色" action:@selector(blueItemClick)];
mc.menuItems = @[redItem,greenItem,blueItem];
//UIMenuController所在的view必须能够成为第一响应者,而普通的UIView不能成为第一响应者,所以UIMenuController必须显示在自定义view上。
[self.view becomeFirstResponder];
//设置菜单控制器显示的位置和父视图。
[mc setTargetRect:_myView.frame inView:self.view];
//让菜单控制器显示
[mc setMenuVisible:YES animated:YES];
}
}
捏合手势方法
- (void)pinchGestureRecognized:(UIPinchGestureRecognizer *)gesture{
_myView.transform = CGAffineTransformScale(_myView.transform, gesture.scale, gesture.scale);
gesture.scale = 1;
}
旋转手势方法
- (void)rotationGestureRecognized:(UIRotationGestureRecognizer *)gesture{
_myView.transform = CGAffineTransformRotate(_myView.transform, gesture.rotation);
gesture.rotation = 0;
}
滑动手势方法
- (void)panGestureRecognized:(UIPanGestureRecognizer *)gesture{
CGPoint point = [gesture translationInView:self.view];
_myView.center = CGPointMake(_myView.center.x+point.x, _myView.center.y+point.y);
[gesture setTranslation:CGPointZero inView:self.view];
}
- (void)redItemClick{
_myView.backgroundColor = [UIColor redColor];
[self.view resignFirstResponder];
}
- (void)greenItemClick{
_myView.backgroundColor = [UIColor greenColor];
[self.view resignFirstResponder];
}
- (void)blueItemClick{
_myView.backgroundColor = [UIColor blueColor];
[self.view resignFirstResponder];
}
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backgroundTapped)];
[self.view addGestureRecognizer:tap];
_myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
_myView.center = self.view.center;
_myView.backgroundColor = [UIColor redColor];
[self.view addSubview:_myView];
//UIGestureRecognizer 手势识别器,能够把所在的view上的touch事件识别为相应的手势。
//这个类不能直接使用,需要使用它的各种子类。
单击手势
//创建手势时,需要制定target和方法,那么在手势触发时,就会调用绑定的方法。UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognized:)];
//触发手势所需要的点击次数。
tapGesture.numberOfTapsRequired = 1;
//触发手势所需要的触摸点数。
tapGesture.numberOfTouchesRequired = 1;
//把手势识别器添加到view上,view上的touch时间就会被识别。
[_myView addGestureRecognizer:tapGesture];
双击手势
UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestureRecognized:)];//触发手势所需要的点击次数。
doubleTapGesture.numberOfTapsRequired = 2;
//触发手势所需要的触摸点数。
doubleTapGesture.numberOfTouchesRequired = 1;
//把手势识别器添加到view上,view上的touch时间就会被识别。
[_myView addGestureRecognizer:doubleTapGesture];
//tapGesture手势必须在doubleTapGesture手势识别失败时才能被识别。
[tapGesture requireGestureRecognizerToFail:doubleTapGesture];
长按手势
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureRecognized:)];//触发长按手势的按压时间
longPress.minimumPressDuration = 0.5;
//手势触发前最大的允许移动距离。
longPress.allowableMovement = 10;
[_myView addGestureRecognizer:longPress];
捏合手势
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureRecognized:)];[_myView addGestureRecognizer:pinch];
旋转手势
UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureRecognized:)];//手势也可以设置代理
rotation.delegate = self;
[_myView addGestureRecognizer:rotation];
滑动手势
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];[_myView addGestureRecognizer:pan];
}
//当另外一个手势也可能触发时,调用此方法,返回YES,允许同时触发,返回NO不允许同时触发。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
单击手势方法
- (void)tapGestureRecognized:(UITapGestureRecognizer *)gesture{
NSLog(@"点击了");
}
双击手势方法
- (void)doubleTapGestureRecognized:(UITapGestureRecognizer *)gesture{
NSLog(@"双击了");
}
长按手势方法
- (void)longPressGestureRecognized:(UILongPressGestureRecognizer *)gesture{
//gesture.state手势的状态。
if (gesture.state == UIGestureRecognizerStateBegan) {
NSLog(@"长按了");
//菜单控制器,单例类
UIMenuController *mc = [UIMenuController sharedMenuController];
UIMenuItem *redItem = [[UIMenuItem alloc] initWithTitle:@"红色" action:@selector(redItemClick)];
UIMenuItem *greenItem = [[UIMenuItem alloc] initWithTitle:@"绿色" action:@selector(greenItemClick)];
UIMenuItem *blueItem = [[UIMenuItem alloc] initWithTitle:@"蓝色" action:@selector(blueItemClick)];
mc.menuItems = @[redItem,greenItem,blueItem];
//UIMenuController所在的view必须能够成为第一响应者,而普通的UIView不能成为第一响应者,所以UIMenuController必须显示在自定义view上。
[self.view becomeFirstResponder];
//设置菜单控制器显示的位置和父视图。
[mc setTargetRect:_myView.frame inView:self.view];
//让菜单控制器显示
[mc setMenuVisible:YES animated:YES];
}
}
捏合手势方法
- (void)pinchGestureRecognized:(UIPinchGestureRecognizer *)gesture{
_myView.transform = CGAffineTransformScale(_myView.transform, gesture.scale, gesture.scale);
gesture.scale = 1;
}
旋转手势方法
- (void)rotationGestureRecognized:(UIRotationGestureRecognizer *)gesture{
_myView.transform = CGAffineTransformRotate(_myView.transform, gesture.rotation);
gesture.rotation = 0;
}
滑动手势方法
- (void)panGestureRecognized:(UIPanGestureRecognizer *)gesture{
CGPoint point = [gesture translationInView:self.view];
_myView.center = CGPointMake(_myView.center.x+point.x, _myView.center.y+point.y);
[gesture setTranslation:CGPointZero inView:self.view];
}
- (void)redItemClick{
_myView.backgroundColor = [UIColor redColor];
[self.view resignFirstResponder];
}
- (void)greenItemClick{
_myView.backgroundColor = [UIColor greenColor];
[self.view resignFirstResponder];
}
- (void)blueItemClick{
_myView.backgroundColor = [UIColor blueColor];
[self.view resignFirstResponder];
}
相关文章推荐
- IOS 二维码生成
- ios开发多线程篇——GCD介绍
- ios 指定某个页面是横屏还是竖屏
- iOS证书描述文件说明
- iOS 开发--最新版 cocoapods 安装教程
- iOS开发之tableview的优化
- iOS开发之应用程序进入后台时的生命周期以及回到前台的生命周期
- iOS:界面适配(三)--iPhone不同机型或设备不同尺寸适配(屏幕适配)和系统适配
- iOS开发集成友盟推送
- 字符处分割成数组 ios
- IOS 解决集成zbar链接错误
- iOS 获取 年 月 日
- iOS之处理不等高TableViewCell的几种方法
- iOS沙盒目录结构解析
- iOS 禁止手势滑动翻页
- 极光推送步骤(ios)
- 浅析ARC
- 一招解决全局键盘遮挡输入框问题
- ios开发--清理缓存
- 信鸽推送步骤(ios)