I have a subclass of UIView
in which I've overridden hitTest:withEvent:
as follows:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
NSLog(@"Event = %@", event);
return self;
}
For each touch in the view, I am seeing three calls to hitTest:withEvent:
. These three calls are made before touch up. The output is as follows:
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: {(
)}
Based on the timestamps and addresses, it appears as if a single UITouchesEvent
object is being used and its timestamp isn't properly set until the third call. Can anyone explain why hitTest:withEvent:
gets called three times like this? I'm not looking for a workaround. I just want to understand what's going on.