如何获得当前触摸的位置?

时间:2014-05-29 14:13:11

标签: ios objective-c touch

我正在构建一款游戏,基本上目标是按住按钮很长时间。 游戏开始于" 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;

他们的修女为我这个用途服务。

有没有办法在屏幕上显示当前触摸?

由于

1 个答案:

答案 0 :(得分:0)

touchesCancelled:withEvent:方法

触摸开始时,会调用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];
    // ...
}