MkMapView点击+注释选择问题

Abi*_*ain 5 iphone annotations mapkit mkmapview ios

我有一个MkMapView,我有一些注释.单击注释时,其详细信息在另一个视图中打开,该视图在地图视图的下半部分具有滚动视图.当我们滚动滚动视图时,地图以下一个注释为中心,其详细信息显示在scrollview中.

我的问题是我想在地图上添加一个点击手势,这样当我点击地图时,滚动视图应该隐藏.为此,我在地图上添加了一个UiTapGesture也可以正常工作,但问题是地图上的注释不再保持可用.地图总是进行tapgesture的动作,它再也不会再调用selectannotation方法了?

我该如何解决这个问题????

小智 4

您可以通过实现委托方法来告诉手势识别器和地图同时工作shouldRecognizeSimultaneouslyWithGestureRecognizer

\n\n

创建点击手势时,设置其委托:

\n\n
tapGR.delegate = self; \xc2\xa0//also add <UIGestureRecognizerDelegate> to @interface\n
Run Code Online (Sandbox Code Playgroud)\n\n

并实现该方法:

\n\n
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer \n\xc2\xa0 \xc2\xa0 shouldRecognizeSimultaneouslyWithGestureRecognizer\n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 :(UIGestureRecognizer *)otherGestureRecognizer\n{\n\xc2\xa0 \xc2\xa0 return YES;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在您的点击手势方法和didSelectAnnotationViewwill 都会被调用。

\n\n

假设您的点击处理程序首先被调用,您可以删除并清空那里的滚动视图,然后 didSelectAnnotationView 将创建并添加滚动视图。如果序列结果不同,您可能需要添加一些标志来协调删除/创建。

\n