私は、タッチ/ジェスチャイベントをtopViewからbottomViewに送信するためにあらゆる種類の可能性を試してきました。私はOpenFrameworksGLViewを使用しています。1つのクラスからサブクラスにデータを送信できますが、RMMapViewはジェスチャーイベントとタッチイベントをオーバーライドしません。タッチ/ジェスチャとHittestを使用してみましたが、それらすべてでマップビューを制御できません。ここで、パンイベントを転送しようとしました。
EAGLView.h https://github.com/openframeworks/openFrameworks/blob/master/addons/ofxiPhone/src/EAGLView.h レイヤークラスで行ったこと:
UIPanGestureRecognizer *panGestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)] autorelease];
panGestureRecognizer.minimumNumberOfTouches = 1;
panGestureRecognizer.maximumNumberOfTouches = 1;
[self addGestureRecognizer:panGestureRecognizer];
- (void)handlePanGesture:(UIPanGestureRecognizer *)recognizer
{
NSLog(@"EAGLEVIEW Pan");
for (UIView *view in [ofxiPhoneGetUIWindow() subviews])
{
if([view isKindOfClass:[RMMapView class]])
{
[view handlePanGesture:recognizer];
// [view panGestureRecognizer delegate self];
// [self addGestureRecognizer:recognizer];
}
}
}
https://github.com/route-me/route-me/blob/master/MapView/Map/RMMapView.m RMMapviewのサブクラス:
if (self) {
UIPanGestureRecognizer *panGestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)] autorelease];
[panGestureRecognizer setDelegate:self];
panGestureRecognizer.minimumNumberOfTouches = 1;
panGestureRecognizer.maximumNumberOfTouches = 1;
NSLog(@"hallo123 %@",self);
[self addGestureRecognizer:panGestureRecognizer];
- (void)handlePanGesture:(UIPanGestureRecognizer *)recognizer
{
NSLog(@"pan");
[recognizer setDelegate:self];
[super handlePanGesture:recognizer];
}