2接触问题

时间:2010-10-15 19:25:07

标签: objective-c ios

最近我用这些代码来处理拖动触摸:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

但我的问题是,当用户同时触摸2个按钮时,只有一个调用了如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

UIGestureRecognizer易于实现,并且在触摸事件处理方面不易出错。 当按下第二个按钮时,可以在touchesBegan,touchesMoved或touchesEnded上输入按下事件,您必须在这些地方检查[触摸计数]。但是如果你想处理拖动行为,touchesMoved是检查两次触摸或只触摸一次的最佳位置。

正如Eiko所说,你应该实施touchCanceled。 触摸事件的顺序可以是

  • touchingBegan - > touchMoved - > touchEnded - >摸了一下,
  • 或touchBegan - > touchMoved - > touchCanceled(没有触及过)。

如果没有移动,则不会调用touchMoved。这意味着触摸事件的顺序将是

  • touchingBegan - > touchEnded - > touchedCanceled。
  • 或touchBegan - > touchedCanceled。

答案 2 :(得分:0)

感谢大家的答案,但在我的代码中,我使用了UITouch *t =[..];,如果我把它放在(UITouch *t in ... )的for循环中,那么当用户同时触摸2个手指时,方法调用两次