最近我用这些代码来处理拖动触摸:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
但我的问题是,当用户同时触摸2个按钮时,只有一个调用了如何解决这个问题?
答案 0 :(得分:1)
你应该考虑UIGestureRecognizer,如果它只是一个拖动手势http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/cl/UIGestureRecognizer
答案 1 :(得分:0)
UIGestureRecognizer易于实现,并且在触摸事件处理方面不易出错。 当按下第二个按钮时,可以在touchesBegan,touchesMoved或touchesEnded上输入按下事件,您必须在这些地方检查[触摸计数]。但是如果你想处理拖动行为,touchesMoved是检查两次触摸或只触摸一次的最佳位置。
正如Eiko所说,你应该实施touchCanceled。 触摸事件的顺序可以是
如果没有移动,则不会调用touchMoved。这意味着触摸事件的顺序将是
答案 2 :(得分:0)
感谢大家的答案,但在我的代码中,我使用了UITouch *t =[..];
,如果我把它放在(UITouch *t in ... )
的for循环中,那么当用户同时触摸2个手指时,方法调用两次