所以,我有一个自定义手势识别器添加到skmap,但行为不一致,但相当奇怪。首先,地图和我的手势识别器都会响应手势事件。
但是在平移或捏合后旋转&缩放,只有手势识别器响应手势。虽然地图不响应任何手势,如捏/平移/点击。我称之为“锁定”#34;状态。
在此状态下,地图不会响应任何内容。试图旋转/捏合将解锁"它。但试图平移不会。因此,例如,序列是,我平移地图,它遵循。然后我几次平移地图,它根本不动。然后我尝试旋转它,地图保持不动。然后我第三次平移它,它可以再次按照我的手势。
所以我的问题是,这两种状态之间有什么区别,当我移动/尝试旋转它时,地图发生了什么变化。
我的代码非常简单,仅用于测试目的。 myGestureRecognizer.m:
#import "myGestureRecognizer.h"
#import <MapKit/MapKit.h>
@implementation myGestureRecogniczer
-(id)init;
{
self = [super init];
self.delegate = self;
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches Began");
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches Moved");
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches Canceled");
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches Ended");
}
@end
和mapViewController.m:
-(void)viewDidLoad
{
[super viewDidLoad];
self.myMapView = [[SKMapView alloc] initWithFrame:CGRectMake( 0.0f, 0.0f, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];
self.myMapView.delegate = self;
self.myMapView.calloutView.delegate = self;
[self.view addSubview:self.myMapView];
myGestureRecogniczer *gestureRecognizer = [[myGestureRecogniczer alloc] init];
[self.myMapView addGestureRecognizer:gestureRecognizer];
}