UIView -hitTest: withEvent: вызывается три раза?

Я пытаюсь перехватить любую активность (например, касания), которая происходит внутри всего моего приложения.

Другими словами, я пытаюсь получать уведомления о любом событии касания, которое происходит в моем основном UIView, содержащий остальные элементы управления. Для этого я подумал, что метод UIView -hitTest: withEvent: был хорошим решением.

Однако, когда я NSLog в этот переопределяемый метод перед вызовом [super hitTest: ... withEvent: ...], я вижу, что он вызывается 3 раза для любого прикосновения, которое я делаю, и я не вижу никакой разницы в событии, которое я получаю каждый раз, когда он вызывается.

Вот как реализован метод в главном представлении моего приложения:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    NSLog(@"hitTest:withEvent called :");
    NSLog(@"Event: %@", event);
    NSLog(@"Point: %@", NSStringFromCGPoint(point));
    NSLog(@"Event Type: %d", event.type);
    NSLog(@"Event SubType: %d", event.subtype);
    NSLog(@"---");

    return [super hitTest:point withEvent:event];
}

И вот что я NSLog для одного касания в этом представлении:

2010-11-29 14:09:26.892 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.892 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37935.2 touches: {(
)}
2010-11-29 14:09:26.892 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.892 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.892 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.893 Application[68818:207] ---
2010-11-29 14:09:26.893 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.893 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37935.2 touches: {(
)}
2010-11-29 14:09:26.893 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.893 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.893 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.893 Application[68818:207] ---
2010-11-29 14:09:26.893 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.894 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37944.9 touches: {(
)}
2010-11-29 14:09:26.894 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.894 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.894 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.894 Application[68818:207] ---

Как я могу различить эти три уведомления, чтобы вызвать действие, которое я хочу сделать только один раз для одного касания?

Заранее спасибо !

13
задан Thomas Desert 29 November 2010 в 13:18
поделиться