iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(一:UITapGestureRecognizer)

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值