Я не могу найти ничего, чтобы объяснить потерянные события UITouch. Если вы ударите всей рукой по экрану достаточное количество раз, количество касаний Began будет отличаться от количества касаний Enaked! Я думаю, что единственный способ узнать об этих потерянных прикосновениях - это самому сослаться на них и отслеживать, как долго они не двигались.
Пример кода:
int touchesStarted = 0;
int touchesFinished = 0;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
touchesStarted += touches.count;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
touchesFinished += touches.count;
NSLog(@"%d / %d", touchesStarted, touchesFinished);
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[self touchesEnded:touches withEvent:event];
}