Обнаружить 2 пальца на экране на карте View MapKit - PullRequest
0 голосов
/ 22 сентября 2009

Я пытаюсь обнаружить событие на карте. Мне просто нужно обнаружить зум (двойное нажатие или 2 пальца на экране). Я пытаюсь добавить слой UIview, который обнаруживает событие, но если я добавляю слой, я теряю элемент управления на карте ( Как перехватить события касаний объектов MKMapView или UIWebView? )

Спасибо за помощь!

Tony

Ответы [ 2 ]

0 голосов
/ 25 сентября 2009

Согласно этому: текст ссылки

Mkmapview должен быть получателем событий по умолчанию.

Поэтому я изменяю класс моего главного окна на MyMainWindow:

MyMainWindow.h

#import <Foundation/Foundation.h>
@class TouchListener;

@interface MyMainWindow : UIWindow {    

TouchListener *Touch;

}

@end 

MyMainWindow.m

 #import "MyMainWindow.h"

 @implementation MyMainWindow

 - (void)sendEvent:(UIEvent*)event {  
 [super sendEvent:event];  
 [Touch sendEvent:event];
 }
 @end

TouchListener.h

#import <Foundation/Foundation.h>
@interface TouchListener : UIView {

}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

@end

TouchListeners.m

#import "TouchListener.h"

@implementation TouchListener

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
 return self;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
 NSLog(@"Moved");
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Touch Began");
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Touch Ended");
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Touch Cancel");
}

@end

Я что-то пропустил?

Спасибо за помощь

0 голосов
/ 23 сентября 2009

Покажите нам код. Вы должны иметь возможность передавать любые интересующие вас события обратно в родительское представление. Например, после того, как вы обнаружите касание двумя пальцами и сделаете все, что захотите, передайте это же событие обратно в просмотр карты и сделайте так, чтобы оно само масштабировалось.

Вот что вы называете, когда закончите обнаружение событий:

[self.nextResponder touchesBegan:touches withEvent:event];
...