在用户缩放/平移 map 时(即在centerCoordinateMKMapView事件之间),我需要准确跟踪regionWillChangeAnimated:regionDidChangeAnimated:

通过尝试将MKAnnotation锁定到 map 的中心,我已经测试了以下方法。不幸的是,它们都不能很好地工作:

  • 使用UIPanGestureRecognizer(如here所述):在触摸显示时效果很好,但在触摸手势完成后对 map 进行动画处理时不会更新。另外,更新滞后于实际的centerCoordinate
  • 使用UIScrollViewDelegatesubclassed MKMapView来接收scrollViewDidScroll:事件。此方法有效,但不会在每次滚动增量时触发该事件,从而导致更新更新。
  • 使用 KVO通知:按照this模式,我尝试观察mapview的centerCoordinate。它适用于userLocation,但通知似乎没有发送给centerCoordinate

  • 关于如何有效,准确地跟踪centerCoordinate的任何想法?

    KVO似乎是最好的选择。使它与MKMapViewcenterCoordinate属性一起工作是否有技巧?

    最佳答案

    如果我正确理解,您正在尝试使某些内容(在您的情况下为注释)始终位于屏幕中央,对吗?
    不确定此注释的用途,但是否可以在 map 顶部放置另一个透明 View 作为注释(您也可以使该 View 与 map 大小相同,并让其 subview 充当注释)是否可以接受。它会对用户产生相同的效果。比该区域发生了变化,您可以获取centerCoordinate并进行所需的任何处理。我认为您在用户平移或捏 map 时不需要进行任何处理。更不用说注释的意思是具有固定的坐标。

    07-26 09:38