-(void)initTouchesRecognizer{
DLog(@"");
recognizer = [[UIGestureRecognizer alloc] init];
[self addGestureRecognizer:recognizer];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
DLog(@"");
NSSet *allTouches = [event allTouches];
for (UITouch *touch in allTouches) {
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
DLog(@"");
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[self touchesEnded:touches withEvent:event];
}
这是手势识别器的代码。手势识别器是为 UIView 设计的,所以实际上每个视图只能有一种手势识别器类型。您可以在同一页面上对不同的事情使用单击、双击、三次点击、滑动等,但是让两个相同类型的人做两件不同的事情是一项壮举,因为它们的设计初衷不是那样。您应该使用按钮,就像前面的答案所说的那样。我试图做同样的事情并最终改用按钮,结果证明这更方便。即使您可以让手势识别器按照您想要的方式工作,这也是非常困难和乏味的。UIButton 的代码要短得多。
编辑
手势识别器通常用于在点击 UIView 时使键盘消失等事情;像这样的东西。它不应该用作页面上的一组自定义按钮。
编辑#2
这是你如何让它识别手势,以便它调用适当的函数:
-(void)viewDidLoad {
[super viewDidLoad];
UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame=CGRectMake(0, 0, 100, 100);
[self.view addSubview:button];
UIGestureRecognizer *swipe=[[UIGestureRecognizer alloc]initWithTarget:button action:@selector(detectSwipe)];
[button addGestureRecognizer:swipe];
}
你必须初始化它并告诉它去哪里。