您的位置:首页 > 产品设计 > UI/UE

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



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 uiview
相关文章推荐