iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(一:UITapGestureRecognizer)
2014-03-30 10:51
591 查看
使用手势处理器处理用户触碰手势的编程步骤如下:
1.根据程序要处理的手势创建对应的手势处理器对象,创建的手势处理器时需要指定target和action参数--当该控件上发生触碰手势后,该target对象的action方法将会被激发。
2.如果该UI控件不允许用户交互,则将该UI空间的userInterfactionEnabled属性设置为YES;如果希望该控件可支持多点触碰,还需要将multipleTouchEnabled设置YES.
3.调用UI控件的addGestureRecognizer:方法添加该手势处理器
UITapGestureRecognizer提供了如下两个属性:
1.numberOfTapsRequired:指定该手势处理器只处理几次触碰事件
2.numberOfTouchesRequired:指定该手势处理器只处理几个手指的触碰事件
例子:
1.创建一个带有xib的Single View Application
2.在xib中先后拖入UILabel和UIView两个控件,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/73e0bbf1493378dcbdc8c7dc05ed47c7)
3.接着在项目自动生成的ViewController.h文件中加入如下代码:
#import <UIKit/UIKit.h>
@interface ViewController :
UIViewController
{
UILabel *showPoint;
UIView *gv;
}
@property(nonatomic,
retain) IBOutlet UILabel *showPoint;
@property(nonatomic,
retain) IBOutlet UIView *gv;
@end
再在ViewController.m文件中加上两个属性的synthesize
4.再回到xib中,先单击拖进去的UIView,然后选择属性栏的inspector栏目,接着在这个栏目中得Referencing Outlets下面点选圆形按钮,按住command键,然后拖动鼠标到File's Owner,这时会弹出两个属性的名称,选择gv即可,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/146dbaafb93b1ea248415ae6de627f89)
这一步完成之后,再选择UILabel,执行与上图相同的步骤,只是拖动到File's Owner后选择的属性为showPoint。
5.在ViewController.m文件中加入如下代码:
@implementation ViewController
@synthesize showPoint;
@synthesize gv;
- (void)viewDidLoad
{
[super
viewDidLoad];
self.view.backgroundColor = [UIColor
lightGrayColor];
// self.gv.layer.borderWidth = 2;
// self.gv.layer.cornerRadius = 6;
//设置gv空间支持用户交互
self.gv.userInteractionEnabled =
YES;
//设置gv空间支持多点触碰
self.gv.multipleTouchEnabled =
YES;
for(int i =
1; i < 6; i++) {
//创建手势处理器,指定使用该控制器的handleTap:方法处理手势
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer
alloc] initWithTarget:self
action:@selector(handleTap:)];
//设置该点击手势处理器只处理i次连击事件
gesture.numberOfTapsRequired = i;
//设置该点击手势处理器只处理两个手指的触碰事件
gesture.numberOfTouchesRequired =
2;
//为gv空间添加手势处理
[self.gv
addGestureRecognizer:gesture];
}
}
- (void)didReceiveMemoryWarning
{
[super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//实现手势处理器的方法,该方法应该声明一个形参
//当该方法被激发时,手势处理器会作为参数传给该方法的参数
-(void) handleTap:(UITapGestureRecognizer *) gesture
{
NSLog(@"start....");
NSInteger touchNum = gesture.numberOfTouches;
NSUInteger tapNum = gesture.numberOfTapsRequired;
self.showPoint.text = [NSString
stringWithFormat:@"用户使用%d个手指进行触碰,触碰次数为:%d",touchNum,tapNum];
//指定2秒后清除label的文本
[self.showPoint
performSelector:@selector(setText:)
withObject:@""
afterDelay:2];
}
@end
1.根据程序要处理的手势创建对应的手势处理器对象,创建的手势处理器时需要指定target和action参数--当该控件上发生触碰手势后,该target对象的action方法将会被激发。
2.如果该UI控件不允许用户交互,则将该UI空间的userInterfactionEnabled属性设置为YES;如果希望该控件可支持多点触碰,还需要将multipleTouchEnabled设置YES.
3.调用UI控件的addGestureRecognizer:方法添加该手势处理器
UITapGestureRecognizer提供了如下两个属性:
1.numberOfTapsRequired:指定该手势处理器只处理几次触碰事件
2.numberOfTouchesRequired:指定该手势处理器只处理几个手指的触碰事件
例子:
1.创建一个带有xib的Single View Application
2.在xib中先后拖入UILabel和UIView两个控件,如下图所示:
3.接着在项目自动生成的ViewController.h文件中加入如下代码:
#import <UIKit/UIKit.h>
@interface ViewController :
UIViewController
{
UILabel *showPoint;
UIView *gv;
}
@property(nonatomic,
retain) IBOutlet UILabel *showPoint;
@property(nonatomic,
retain) IBOutlet UIView *gv;
@end
再在ViewController.m文件中加上两个属性的synthesize
4.再回到xib中,先单击拖进去的UIView,然后选择属性栏的inspector栏目,接着在这个栏目中得Referencing Outlets下面点选圆形按钮,按住command键,然后拖动鼠标到File's Owner,这时会弹出两个属性的名称,选择gv即可,如下图所示:
这一步完成之后,再选择UILabel,执行与上图相同的步骤,只是拖动到File's Owner后选择的属性为showPoint。
5.在ViewController.m文件中加入如下代码:
@implementation ViewController
@synthesize showPoint;
@synthesize gv;
- (void)viewDidLoad
{
[super
viewDidLoad];
self.view.backgroundColor = [UIColor
lightGrayColor];
// self.gv.layer.borderWidth = 2;
// self.gv.layer.cornerRadius = 6;
//设置gv空间支持用户交互
self.gv.userInteractionEnabled =
YES;
//设置gv空间支持多点触碰
self.gv.multipleTouchEnabled =
YES;
for(int i =
1; i < 6; i++) {
//创建手势处理器,指定使用该控制器的handleTap:方法处理手势
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer
alloc] initWithTarget:self
action:@selector(handleTap:)];
//设置该点击手势处理器只处理i次连击事件
gesture.numberOfTapsRequired = i;
//设置该点击手势处理器只处理两个手指的触碰事件
gesture.numberOfTouchesRequired =
2;
//为gv空间添加手势处理
[self.gv
addGestureRecognizer:gesture];
}
}
- (void)didReceiveMemoryWarning
{
[super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//实现手势处理器的方法,该方法应该声明一个形参
//当该方法被激发时,手势处理器会作为参数传给该方法的参数
-(void) handleTap:(UITapGestureRecognizer *) gesture
{
NSLog(@"start....");
NSInteger touchNum = gesture.numberOfTouches;
NSUInteger tapNum = gesture.numberOfTapsRequired;
self.showPoint.text = [NSString
stringWithFormat:@"用户使用%d个手指进行触碰,触碰次数为:%d",touchNum,tapNum];
//指定2秒后清除label的文本
[self.showPoint
performSelector:@selector(setText:)
withObject:@""
afterDelay:2];
}
@end
相关文章推荐
- iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(二:UIPinchGestureRecognizer)
- iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(三:UIPinchGestureRecognizer和UIRotationGestureRecognizer)
- iPhone/iPad高级应用与手游开发学习笔记:sqlite3学习(简单英文生词本demo)
- iPhone/iPad高级应用与手游开发学习笔记:AVAudioPlayer学习(音频播放demo)
- iPhone开发之手势的预习—— UITapGestureRecognizer pinch捏合 longPress长按 rotation旋转
- 《疯狂iOS讲义(下)——iPhone/iPad高级应用与手游开发(含CD光盘1张)》
- 斯坦福大学公开课 iOS应用开发教程学习笔记(第七课)UIToolbar、iPad 和iPhone的通用程序
- iOS开发笔记--iphone练习之手势识别(双击、捏、旋转、拖动、划动、长按)UITapGestureRecognize
- 2013斯坦福大学iOS应用开发学习笔记 11 Table View and iPad
- iPhone开发--检查UIWebView上Touch/UITapGestureRecognizer事件的最简单的方法(转载)
- 2011斯坦福大学iOS应用开发教程学习笔记(第五课)Protocols,手势识别
- 斯坦福大学公开课 iOS应用开发教程学习笔记(第五课)Protocols,手势识别
- iOS学习资料分享 -- 苹果官方iPhone应用高级开发课程(16集)
- 斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序
- IOS高级教程3:UITapGestureRecognizer手势识别的简单使用到精通
- 2011斯坦福大学iOS应用开发教程学习笔记(第五课)Protocols,手势识别
- 2011斯坦福大学iOS应用开发教程学习笔记(第五课)Protocols,手势识别
- IOS开发:添加了手势UITapGestureRecognizer,但是点击却没任何反应
- 招聘苹果iPad/iPhone大型应用系统高级开发工程师
- 2011斯坦福大学iOS应用开发教程学习笔记(第五课)Protocols,手势识别