编辑:我会让我的目标更加清晰。
我有一些MKMapView上的注释,我想让它们易于拖动。标准Apple移动注释的方法是单击一次,然后快速单击并按住并拖动。应用程序的用户抱怨这样做太难了。
因此,从技术上讲,我想使用平移手势。问题在于MKMapView也使用平移手势来移动地图。
当用户进行平移手势时,我想要做的是检查平移手势是否开始非常接近注释,如果是,则让平移手势处理程序移动该注释。我已经有了这部分的工作。
但是,如果平移手势与注释不接近,则将其传递给MKMapView进行处理。
// 编辑结束
我有一个处理平移手势的方法。当MKMapView上有平移手势时,这个方法会像我预期的那样调用。有时候我不想在我的方法中处理手势,而是通过将手势传递到MKMapView中,使其像正常情况下一样平/拖动地图。
以下是我所拥有的概述:
-(void)panGesture:(UIPanGestureRecognizer*)sender
根据某些逻辑,我想将这个手势传递给MKMapView(self.mapView)。请问有人可以分享一下如何做到吗?
我尝试过 [self.mapView gestureRecognizerShouldBegin:sender];
但是没有任何反应。
- (void) addPanGesture
{
self.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];
self.panGesture.delegate = self;
[self.panGesture setMinimumNumberOfTouches:1];
[self.panGesture setMaximumNumberOfTouches:1];
[self.mapView addGestureRecognizer:self.panGesture];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
BOOL result = NO;
if ((gestureRecognizer == self.panGesture) && [[otherGestureRecognizer view] isDescendantOfView:[gestureRecognizer view]])
{
result = YES;
}
return result;
}
-(void)panGesture:(UIPanGestureRecognizer*)sender
{
//some logic to see if we will handle the gesture in this method or pass gesture on to the MKMapView
return;
}