Warum ist die Methode hitTest:withEvent: drei mal aufgerufen für jeden touch?

Habe ich eine Unterklasse von UIView in die habe ich überschrieben hitTest:withEvent: wie folgt:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    NSLog(@"Event = %@", event);
    return self;
}

Für jede Note in der Ansicht, ich sehe drei Anrufe zu hitTest:withEvent:. Diese drei Anrufe gemacht, bevor Sie berühren sich. Die Ausgabe ist wie folgt:

2011-07-01 09:20:58.553 AppName[930:207] Event = <UITouchesEvent: 0x6a08360> timestamp: 4297.16 touches: {(
)}
2011-07-01 09:20:58.553 AppName[930:207] Event = <UITouchesEvent: 0x6a08360> timestamp: 4297.16 touches: {(
)}
2011-07-01 09:20:58.554 AppName[930:207] Event = <UITouchesEvent: 0x6a08360> timestamp: 4304.54 touches: {(
)}

Anhand der Zeitstempel und Adressen, es scheint, als ob Sie ein einzelnes UITouchesEvent - Objekt verwendet wird und die Zeitstempel nicht richtig, bis der Dritte Anruf. Kann mir jemand erklären, warum hitTest:withEvent: aufgerufen wird, wird in drei Zeiten wie diesen? Ich bin nicht auf der Suche nach einem workaround. Ich möchte nur verstehen, was Los ist.

  • haben Sie überprüft, die stack-trace in den debugger? ich würde vermuten, die verschiedenen Teile der Maschinen erkundigen, wer die Note getroffen hat
  • Es sieht aus wie _UIApplicationHandleEvent tun all die Fragen, zweimal durch [UIWindow _hitTestToPoint:pathIndex:forEvent:] und einmal auf seine eigenen.
  • Hast du jemals das Glück haben, herauszufinden, warum dies geschieht, oder wie es zu vermeiden? Ich bin versucht zu tun, einige Protokollierung für berührt auf einen Blick aber immer noch wollen, lassen Sie die Berührungen durch die anzeigen zu es superview.
  • Ich habe keine zusätzlichen Informationen. Sorry.
Schreibe einen Kommentar