我有一个带有 MKMapView 的应用程序和每次地图更改位置(在 RegionDidChangeAnimated 中)时调用的代码。当应用程序最初加载时,在显式更新地图坐标的平移(滑动)、捏合、点击和按钮上调用regionDidChangeAnimated。加载其他视图并返回地图后,仅针对显式更新地图的点击和按钮调用regionDidChangeAnimated。平移地图和捏合不再调用regionDidChangeAnimated。
我看过这个堆栈溢出帖子 https://stackoverflow.com/questions/4118596/mkmapview-regiondidchangeanimated-not-always-called这并没有解决这个问题。论坛帖子于开发论坛 https://devforums.apple.com/message/525411 and iphonedevsdk http://www.iphonedevsdk.com/forum/iphone-sdk-development/79199-regiondidchangeanimated-not-always-firing.html也没有工作。有谁知道导致这个问题的原因是什么?我没有向 MKMapView 添加任何子视图。
我最初不想这样做,但到目前为止它似乎没有任何问题(取自相关的开发论坛帖子):
将 UIGestureRecognizerDelegate 添加到标题中。
现在添加版本号检查...如果我们使用的是 iOS 4,我们可以这样做:
if (NSFoundationVersionNumber >= 678.58){
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureCaptured:)];
pinch.delegate = self;
[mapView addGestureRecognizer:pinch];
[pinch release];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureCaptured:)];
pan.delegate = self;
[mapView addGestureRecognizer:pan];
[pan release];
}
添加委托方法来处理手势:
#pragma mark -
#pragma mark Gesture Recognizers
- (void)pinchGestureCaptured:(UIPinchGestureRecognizer*)gesture{
if(UIGestureRecognizerStateEnded == gesture.state){
///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated];
}
}
- (void)panGestureCaptured:(UIPanGestureRecognizer*)gesture{
if(UIGestureRecognizerStateEnded == gesture.state){
///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated];
}
}
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
return YES;
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch: (UITouch *)touch{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)