我正在构建一款游戏,基本上目标是按住按钮很长时间。 游戏开始于" touchesBegan"打电话,结束" touchesEnded"。
我有一个问题,这个调用的某些特定时间,没有被调用。经过一番搜索,我发现我不是唯一一个有这个问题的人:
https://discussions.apple.com/thread/1507669?tstart=0
有一个已知的问题,有时候"触及E"不叫。 因此我正在考虑做的工作,设置一个计时器,偶尔检查一下,是否有一个手指按下,以及屏幕上的确切位置。 问题是,我只知道这些方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
他们的修女为我这个用途服务。
有没有办法在屏幕上显示当前触摸?
由于
答案 0 :(得分:0)
触摸开始时,会调用touchesBegan:withEvent:
。之后,在将来的某个时刻,将会调用touchesEnded:withEvent:
或touchesCancelled:withEvent:
!你可以,例如创建方法touchesEndedOrCancelled:withEvent:
并从touchesEnded和touchesCancelled调用该方法。
要获得当前的触摸,您需要自己跟踪它们。只需创建一个可变集_allTouches
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[_allTouches unionSet:touches];
// ...
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[_allTouches minusSet:touches];
// ...
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[_allTouches minusSet:touches];
// ...
}