首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实现MKPinAnnotationView拖动功能?

实现MKPinAnnotationView拖动功能?
EN

Stack Overflow用户
提问于 2012-12-24 12:42:07
回答 2查看 2.6K关注 0票数 0

有没有人能推荐一个在iPhone MKMapView中实现MKPinAnnotationView拖拽功能的好教程

EN

回答 2

Stack Overflow用户

发布于 2012-12-24 13:44:57

您可以从this链接中找到MKPinAnnotationView拖放功能的源代码演示。

Github更新:上面站点url中给出的Github项目链接不起作用。但我在this url上找到了一个新的项目示例。

票数 4
EN

Stack Overflow用户

发布于 2012-12-24 13:15:27

要使批注可拖动,请将批注视图的draggable属性设置为YES。

这通常是在viewForAnnotation委托方法中完成的,因此请确保将MKMapView委托设置为self,并在.h文件中符合它。

例如:

代码语言:javascript
运行
复制
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    static NSString *reuseId = @"pin";
    MKPinAnnotationView *pav = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
    if (pav == nil)
    {
        pav = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId];
        pav.draggable = YES; // Right here baby!
        pav.canShowCallout = YES;
    }
    else
    {
        pav.annotation = annotation;
    }

    return pav;
}

好的,下面是管理注解拖动操作的代码:

代码语言:javascript
运行
复制
- (void)mapView:(MKMapView *)mapView 
    annotationView:(MKAnnotationView *)annotationView 
    didChangeDragState:(MKAnnotationViewDragState)newState 
    fromOldState:(MKAnnotationViewDragState)oldState 
{
    if (newState == MKAnnotationViewDragStateEnding) // you can check out some more states by looking at the docs
    {
        CLLocationCoordinate2D droppedAt = annotationView.annotation.coordinate;
        NSLog(@"dropped at %f,%f", droppedAt.latitude, droppedAt.longitude);
    }
}

这应该会有帮助!

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

https://stackoverflow.com/questions/14017150

复制
相关文章

相似问题

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