UIGestureRecognizer(手势识别器)
来源:互联网 发布:淘宝韩版女卫衣 编辑:程序博客网 时间:2024/04/28 05:26
//
// ViewController.h
// UIGestureRecognizer
//
// Created by Cyric Tsao on 15-5-14.
// Copyright (c) 2015年Cyric Tsao. All rights reserved.
//
#import<UIKit/UIKit.h>
@interfaceViewController : UIViewController
{
// ViewController.h
// UIGestureRecognizer
//
// Created by Cyric Tsao on 15-5-14.
// Copyright (c) 2015年Cyric Tsao. All rights reserved.
//
#import<UIKit/UIKit.h>
@interfaceViewController : UIViewController
{
UIView *_demoView;
CGAffineTransform _transform;
}
}
@end
//
// ViewController.m
// UIGestureRecognizer
//
// Created by Cyric Tsao on 15-5-14.
// Copyright (c) 2015年Cyric Tsao. All rights reserved.
//
#import"ViewController.h"
@interfaceViewController()
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
//创建一个demoView视图
_demoView = [[UIViewalloc]initWithFrame:CGRectMake(100,100,165,165)];
_demoView.backgroundColor= [UIColorpurpleColor];
[self.viewaddSubview:_demoView];
//----------UIGestureRecognizer(手势识别器)----------
//手势识别器类,用于检测用户使用设备时所用的手势.它是一个抽象类,定义了所有手势的基本行为.
//以下是UIGestureRecognizer子类,用于处理具体的用户手势行为
//----------1.UITapGestureRecognizer(轻击,点击手势)----------
//1.一只手指单击
//默认就是一个手指点击一次
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(singleTapAction:)];
//设置手指点击次数(单击或者双击),默认是1
singleTap.numberOfTapsRequired= 1;
//设置点击的手指个数(一根手指或者两根手指),默认是1
singleTap.numberOfTouchesRequired= 1;
//给_demoView视图添加一个单击手势
[_demoViewaddGestureRecognizer:singleTap];
//2.一只手指双击
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(doubleTapAction:)];
//设置手指点击次数(单击或者双击),默认是1
doubleTap.numberOfTapsRequired= 2;
//设置点击的手指个数(一根手指或者两根手指),默认是1
doubleTap.numberOfTouchesRequired= 1;
//给_demoView视图添加一个双击手势
[_demoViewaddGestureRecognizer:doubleTap];
//3.绑定单击和双击事件(区别单击和双击)
[singleTap requireGestureRecognizerToFail:doubleTap];
// ViewController.m
// UIGestureRecognizer
//
// Created by Cyric Tsao on 15-5-14.
// Copyright (c) 2015年Cyric Tsao. All rights reserved.
//
#import"ViewController.h"
@interfaceViewController()
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
//创建一个demoView视图
_demoView = [[UIViewalloc]initWithFrame:CGRectMake(100,100,165,165)];
_demoView.backgroundColor= [UIColorpurpleColor];
[self.viewaddSubview:_demoView];
//----------UIGestureRecognizer(手势识别器)----------
//手势识别器类,用于检测用户使用设备时所用的手势.它是一个抽象类,定义了所有手势的基本行为.
//以下是UIGestureRecognizer子类,用于处理具体的用户手势行为
//----------1.UITapGestureRecognizer(轻击,点击手势)----------
//1.一只手指单击
//默认就是一个手指点击一次
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(singleTapAction:)];
//设置手指点击次数(单击或者双击),默认是1
singleTap.numberOfTapsRequired= 1;
//设置点击的手指个数(一根手指或者两根手指),默认是1
singleTap.numberOfTouchesRequired= 1;
//给_demoView视图添加一个单击手势
[_demoViewaddGestureRecognizer:singleTap];
//2.一只手指双击
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(doubleTapAction:)];
//设置手指点击次数(单击或者双击),默认是1
doubleTap.numberOfTapsRequired= 2;
//设置点击的手指个数(一根手指或者两根手指),默认是1
doubleTap.numberOfTouchesRequired= 1;
//给_demoView视图添加一个双击手势
[_demoViewaddGestureRecognizer:doubleTap];
//3.绑定单击和双击事件(区别单击和双击)
[singleTap requireGestureRecognizerToFail:doubleTap];
//这行很关键,意思是只有当没有检测到doubleTap(双击手势)或者检测doubleTap(双击手势)失败,singleTap(单击手势)才有效
//----------2.UIPanGestureRecognizer(平移,拖拽手势)----------
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(panAction:)];
//给_demoView视图添加一个平移手势
[_demoViewaddGestureRecognizer:pan];
//----------3.UISwipeGestureRecognizer(轻扫,滑动手势)----------
//同一个手势只能指定一个方向,不能同时指定多个方向,要指定多个方向,必须用多个手势
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipeAction:)];
//轻扫的方向(设置向左轻扫响应事件)
swipe.direction= UISwipeGestureRecognizerDirectionLeft;
//给视图添加一个轻扫手势
[self.viewaddGestureRecognizer:swipe];
//----------4.UIPinchGestureRecognizer(捏合手势)----------
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(pinchAction:)];
//给视图添加一个捏合手势
[self.viewaddGestureRecognizer:pinch];
//----------5.UIRotationGestureRecognizer(旋转手势)----------
UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotationAction:)];
//给视图添加一个旋转手势
[self.viewaddGestureRecognizer:rotation];
//----------6.UILongPressGestureRecognizer(长按手势)----------
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longPressAction:)];
longPress.minimumPressDuration= 2;
//给视图添加一个长按手势
[self.viewaddGestureRecognizer:longPress];
}
#pragma mark -1.UITapGestureRecognizer轻击事件
//单击事件
- (void)singleTapAction:(UITapGestureRecognizer*)tap
{
NSLog(@"单击");
}
//双击事件
- (void)doubleTapAction:(UITapGestureRecognizer*)tap
{
NSLog(@"双击");
}
#pragma mark -2.UIPanGestureRecognizer平移手势
- (void)panAction:(UIPanGestureRecognizer*)pan
{
//demoView视图的中心= 手指对象在视图上点击的位置
_demoView.center= [pan locationInView:self.view];
//等价的
//CGPoint point = [pan locationInView:self.view];
//_demoView.center = point;
//NSLog(@"移动了");
}
#pragma mark -3.UISwipeGestureRecognizer轻扫手势
- (void)swipeAction:(UISwipeGestureRecognizer*)swipe
{
NSLog(@"向左轻扫了");
}
#pragma mark -4.UIPinchGestureRecognizer捏合手势
- (void)pinchAction:(UIPinchGestureRecognizer*)pinch
{
if (pinch.state== UIGestureRecognizerStateBegan) {
//如果捏合手势的状态是开始...
_transform = _demoView.transform;
//...记录开始时_demoView视图的transform属性
}else{
//transform:改变,变换,改变...的形状
_demoView.transform= CGAffineTransformScale(_transform, pinch.scale, pinch.scale);
//让_demoView的transform随着捏合手势的比例变化而在原来的基础上缩放
/*
scale属性:
可以理解为两手指之间的距离,其实是个比例,相对距离,不是绝对距离
以刚开始的两个手指对应的两个point的之间的距离为标准,此时scale = 1
若两手指之间距离减小,则scale不断变小,当两指重合,则变为0
若两手指之间距离变大,则scale不断增大,没有上限,看屏幕多大
*/
}
}
#pragma mark -5.UIRotationGestureRecognizer旋转手势
- (void)rotationAction:(UIRotationGestureRecognizer*)rota
{
if (rota.state== UIGestureRecognizerStateBegan) {
//如果旋转手势的状态是开始...
_transform = _demoView.transform;
//...记录开始时_demoView视图的transform属性
}else{
_demoView.transform= CGAffineTransformRotate(_transform, rota.rotation);
//让_demoView的transform随着旋转手势的比例变化而在原来的基础上旋转
/*
rotation属性:
可以理解为两手指之间的旋转的角度,其实是个比例,相对角度,不是绝对角度
以刚开始的两个手指对应的两个point的之间的那条直线为标准,此时rotation = 1
向顺时针旋转,则rotation为正数且不断变大,当旋转360度时,rotation大概为6左右,如果继续顺时针旋转,则角度会不断增加,两圈为12左右,此时若逆时针旋转,角度则不断变小
向逆时针旋转,则rotation为负数且不断变小,当旋转360度时,rotation大概为-6左右
*/
}
}
#pragma mark -6.UILongPressGestureRecognizer长按手势
//长按手势会执行多次
- (void)longPressAction:(UILongPressGestureRecognizer*)lPress
{
if (lPress.state== UIGestureRecognizerStateBegan) {
NSLog(@"长按手势执行了");
}
/*
typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {
UIGestureRecognizerStatePossible, 0//是初始状态,表明识别过程在执行当中(默认的状态)
UIGestureRecognizerStateBegan, 1//开始
UIGestureRecognizerStateChanged, 2//改变
UIGestureRecognizerStateEnded, 3//结束
UIGestureRecognizerStateCancelled, 4//取消,终止
UIGestureRecognizerStateFailed, 5//失败
UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded //识别器已识别到的手势= 结束
};
*/
NSLog(@"%ld",lPress.state);
}
#pragma mark -7.摇晃手势
//摇晃开始
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent*)event
{
NSLog(@"摇晃手势开始了");
}
//摇晃结束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent*)event
{
NSLog(@"摇晃手势结束了");
}
#pragma mark -8.重力加速计(扩展知识 暂无)
@end
0 0
- UIGestureRecognizer(手势识别器)
- UIGestureRecognizer 手势识别器
- UIGestureRecognizer手势识别器
- UIGestureRecognizer手势识别器
- UIGestureRecognizer-手势识别器
- UIGestureRecognizer(手势识别器)
- 读书笔记---UIGestureRecognizer 手势识别器
- UIGestureRecognizer iOS手势识别器
- 26.手势识别器(UIGestureRecognizer)
- iOS编程-------UIImageView、手势识别器UIGestureRecognizer
- 手势识别器(UIGestureRecognizer)- UITapGestureRecognizer(敲击)
- 手势识别器(UIGestureRecognizer)- UIRotationGestureRecognizer(旋转)
- 手势识别器(UIGestureRecognizer)- UIPinchGestureRecognizer(捏合)
- 手势识别器(UIGestureRecognizer)- UIPanGestureRecognizer(拖拽)
- ios 手势识别UIGestureRecognizer
- UIGestureRecognizer手势识别小结
- UIKit 手势识别 UIGestureRecognizer
- UIGestureRecognizer手势识别
- 指针数组和数组指针
- 计量单位数据表
- hdu 2091 空心三角形
- 南宁肛瘘手术哪里更好
- JSF2.0与Spring3的整合
- UIGestureRecognizer(手势识别器)
- DIV中class和id的区别
- Writing Great Git Commit Messages
- JDBC注册驱动程序的三种方式
- 南宁到哪里看大便出血
- 南宁大便出血挂什么科
- C#小游戏之扫雷
- 小米笔试题:给一个多叉树,寻找多叉树上任意两点的最近共同父节点
- messageBox