Intercepting/Hijacking iPhone Touch Events for MKMapView
        Posted  
        
            by Shawn
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Shawn
        
        
        
        Published on 2009-07-13T20:37:43Z
        Indexed on 
            2010/05/09
            8:48 UTC
        
        
        Read the original article
        Hit count: 763
        
Is there a bug in the 3.0 SDK that disables real-time zooming and intercepting the zoom-in gesture for the MKMapView? I have some real simple code so I can detect tap events, but there are two problems:
- zoom-in gesture is always interpreted as a zoom-out
 - none of the zoom gestures update the Map's view in realtime.
 
In hitTest, if I return the "map" view, the MKMapView functionality works great, but I don't get the opportunity to intercept the events.
Any ideas?
MyMapView.h:
@interface MyMapView : MKMapView
{
    UIView      *map;
}
MyMapView.m:
- (id)initWithFrame:(CGRect)frame
{
    if (![super initWithFrame:frame])
        return nil;
    self.multipleTouchEnabled = true;
    return self;
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    NSLog(@"Hit Test");
    map = [super hitTest:point withEvent:event];
    return self;
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s", __FUNCTION__);
    [map touchesCancelled:touches withEvent:event];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event
{
    NSLog(@"%s", __FUNCTION__);
    [map touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
    NSLog(@"%s, %x", __FUNCTION__, mViewTouched);
    [map touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
    NSLog(@"%s, %x", __FUNCTION__, mViewTouched);
    [map touchesEnded:touches withEvent:event];
}
        © Stack Overflow or respective owner