UITapGestureRecognizer 的用法

来源:互联网 发布:数据恢复后表格打不开 编辑:程序博客网 时间:2024/05/01 19:58
//单指单击
UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingerEvent:)];
   singleFingerOne.numberOfTouchesRequired = 1; //手指数
   singleFingerOne.numberOfTapsRequired = 1; //tap次数
   singleFingerOne.delegate = self;
//单指双击
UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self         action:@selector(handleSingleFingerEvent:)];
  singleFingerTwo.numberOfTouchesRequired = 1;
  singleFingerTwo.numberOfTapsRequired = 2;
  singleFingerTwo.delegate = self;
//双指单击
UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleFingerEvent:)];
  doubleFingerOne.numberOfTouchesRequired = 2;
  doubleFingerOne.numberOfTapsRequired = 1;
  doubleFingerOne.delegate = self;
//双指双击
UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self 
  action:@selector(handleDoubleFingerEvent:)];
  doubleFingerTwo.numberOfTouchesRequired = 2;
  doubleFingerTwo.numberOfTapsRequired = 2;
  doubleFingerTwo.delegate = self;
   
  //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理
  [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
  //同理双指亦是如此
  [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
  //将手势添加到view上
  [self.view addGestureRecognizer:singleFingerOne];
  [self.view addGestureRecognizer:singleFingerTwo];
  [self.view addGestureRecognizer:doubleFingerOne];
  [self.view addGestureRecognizer:doubleFingerTwo];
  
  [singleFingerOne release];
  [singleFingerTwo release];
  [doubleFingerOne release];
  [doubleFingerTwo release];
//处理事件的方法:
-(void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender
{
if(sender.numberOfTapsRequired==1)
{
nslog(@"单指单击");
}else if(sender.numberOfTapsRequired==2)
{
nslog(@"单指双击");
}
}
 //处理双指事件
 - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender
{
if (sender.numberOfTapsRequired == 1) 
{
NSLog(@"双指单击");
}else if(sender.numberOfTapsRequired == 2)
{
NSLog(@"双指双击");
}
}


代码中只是列举了单指与双指对于单击或多击的处理,同理多指的操作需修改numberOfTouchesRequired属性,对点击的次数需修改numberOfTapsRequired属性。

对于其他手势例如UISwipeGestureRecognizer,UILongPressGestureRecognizer,UILongPressGestureRecognizer的操作使用类似处理。

在有些控件添加手势点击事件时,不能响应的问题如UILable 。需要设置属性userInteractionEnabled=YES;


0 0