使用手势处理器处理用户触碰手势的编程步骤如下:

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两个控件,如下图所示:

ios 获取触控状态 iphone触控检测app_控件

3.接着在项目自动生成的ViewController.h文件中加入如下代码:

#import <UIKit/UIKit.h>

@interface ViewController :  UIViewController
{
UILabel
UIView
}

@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即可,如下图所示:

ios 获取触控状态 iphone触控检测app_多点触摸_02

这一步完成之后,再选择UILabel,执行与上图相同的步骤,只是拖动到File's Owner后选择的属性为showPoint。

5.在ViewController.m文件中加入如下代码:

@implementation

@synthesize
@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次连击事件
numberOfTapsRequired
        //设置该点击手势处理器只处理两个手指的触碰事件
        gesture.numberOfTouchesRequired = 2;
        //为gv空间添加手势处理
self.gv  addGestureRecognizer:gesture];
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

//实现手势处理器的方法,该方法应该声明一个形参
//当该方法被激发时,手势处理器会作为参数传给该方法的参数
-(void) handleTap:(UITapGestureRecognizer
{
    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