首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >annotationView didChangeDragState被多次触发

annotationView didChangeDragState被多次触发
EN

Stack Overflow用户
提问于 2011-06-14 23:16:02
回答 2查看 2.1K关注 0票数 3

我在IOS4 mapkit中有一个可拖动的注解,当这个注解被拖到一个新位置时,我试图调用一个事件。

我的代码目前看起来像这样:

代码语言:javascript
复制
   - (void)mapView:(MKMapView *)mapView  annotationView:(MKAnnotationView *)annotationView 
    didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState 
{
    if (newState == MKAnnotationViewDragStateEnding)
    {
        CLLocationCoordinate2D droppedAt = annotationView.annotation.coordinate;
        NSLog(@"dropped at %f,%f", droppedAt.latitude, droppedAt.longitude);

        //update the annotation
        //see if its an information annotation
        if ([annotationView.annotation isKindOfClass:[InfoAnnotation class]]) {
            NSLog(@"Info annotation updating..");
            InfoAnnotation* userAnnotation = ((InfoAnnotation *)annotationView.annotation);
            [userAnnotation updateLocationWithServerForConvoy: self.title];
        }

    }
}

代码只是记录更新,然后告诉注释将其更新发送到我的服务器,这是一个自定义方法。

此方法似乎被多次触发,请参阅此处的日志:

代码语言:javascript
复制
2011-06-15 01:12:39.347 Convoy[1699:207] dropped at 37.340206,-122.027550
2011-06-15 01:12:39.347 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:39.658 Convoy[1699:207] dropped at 37.340206,-122.027550
2011-06-15 01:12:39.659 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:39.957 Convoy[1699:207] dropped at 37.340206,-122.027550
2011-06-15 01:12:39.958 Convoy[1699:207] Info annotation updating..


2011-06-15 01:12:43.415 Convoy[1699:207] dropped at 37.339251,-122.026691
2011-06-15 01:12:43.416 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:43.713 Convoy[1699:207] dropped at 37.339251,-122.026691
2011-06-15 01:12:43.713 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:44.006 Convoy[1699:207] dropped at 37.339251,-122.026691
2011-06-15 01:12:44.006 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:44.297 Convoy[1699:207] dropped at 37.339251,-122.026691
2011-06-15 01:12:44.297 Convoy[1699:207] Info annotation updating..


2011-06-15 01:12:54.825 Convoy[1699:207] dropped at 37.337135,-122.025833
2011-06-15 01:12:54.825 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:55.150 Convoy[1699:207] dropped at 37.337135,-122.025833
2011-06-15 01:12:55.150 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:55.475 Convoy[1699:207] dropped at 37.337135,-122.025833
2011-06-15 01:12:55.476 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:55.771 Convoy[1699:207] dropped at 37.337135,-122.025833
2011-06-15 01:12:55.772 Convoy[1699:207] Info annotation updating..
2011-06-15 01:12:56.070 Convoy[1699:207] dropped at 37.337135,-122.025833
2011-06-15 01:12:56.070 Convoy[1699:207] Info annotation updating..

每次我拖动它(即在间隙中),似乎它的调用次数增加了1。谁能告诉我这可能是什么原因?

EN

回答 2

Stack Overflow用户

发布于 2013-05-29 08:31:56

如果有人还想知道-你必须将MKAnnotationView拖动状态设置为MKAnnotationViewDragStateNone

所以代码应该是:

代码语言:javascript
复制
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState
{
  if (newState == MKAnnotationViewDragStateEnding)
  {
    /* ... */
    [annotationView setDragState:MKAnnotationViewDragStateNone];
    // If you are animating - move the above into the completion block
  }
}
票数 4
EN

Stack Overflow用户

发布于 2011-07-15 02:40:22

这看起来确实很奇怪。您是否考虑过简单地连接到注释的setCoordinate方法?每当通过拖动移动MKMapAnnotation时,MapKit都会调用一次此方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6345888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档