Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone MKAnnotationView是不可拖动的,尽管我认为它的实现是正确的?_Iphone_Ios_Mapkit_Mkannotation - Fatal编程技术网

Iphone MKAnnotationView是不可拖动的,尽管我认为它的实现是正确的?

Iphone MKAnnotationView是不可拖动的,尽管我认为它的实现是正确的?,iphone,ios,mapkit,mkannotation,Iphone,Ios,Mapkit,Mkannotation,我已尝试将MKMapView添加到我的新应用程序中。我创建了一个自定义MKAnnotationView->以便可以更改pin的图像。一切正常,直到我试着去拖动大头针。不管我做什么,都不会。还有一件事要说;MapView是大tableView单元格的子视图。但是平移和缩放工作正常,所以我不认为这与此有关 这是我的密码: MKAnnotation MapView所在的视图-委托方法-不包括我初始化MKAnnotation和addAnnotation的部分 有人看到我错过了什么吗 非常感谢 要使注释可

我已尝试将MKMapView添加到我的新应用程序中。我创建了一个自定义MKAnnotationView->以便可以更改pin的图像。一切正常,直到我试着去拖动大头针。不管我做什么,都不会。还有一件事要说;MapView是大tableView单元格的子视图。但是平移和缩放工作正常,所以我不认为这与此有关

这是我的密码:

MKAnnotation

MapView所在的视图-委托方法-不包括我初始化MKAnnotation和addAnnotation的部分

有人看到我错过了什么吗


非常感谢

要使注释可拖动,它必须实现setCoordinate方法。仅仅将视图的draggable属性设置为YES是不够的

注释类已将坐标定义为只读

相反,将其定义为readwrite或assign,并删除坐标方法以及纬度和经度IVAR和属性,因为您可以直接设置坐标


还要添加@synthesis坐标,这样就不必手动编写getter/setter。

要使注释可拖动,它必须实现setCoordinate方法。仅仅将视图的draggable属性设置为YES是不够的

注释类已将坐标定义为只读

相反,将其定义为readwrite或assign,并删除坐标方法以及纬度和经度IVAR和属性,因为您可以直接设置坐标


还添加了@synthesis坐标,这样就不必手动编写getter/setter。

您是否将实现didChangeDragState的类设置为MKMapViewDelegate?如果您这样做,我会在调用viewForAnnotation后设置一个断点,以查看您的annotationView实际上已将Dragable设置为YES,使用lldb调试器-如果您不熟悉它,它是一个很棒的工具。您是否将实现didChangeDragState的类设置为MKMapViewDelegate?如果您这样做,我会在调用viewForAnnotation后设置一个断点,以查看您的annotationView实际上已将Dragable设置为YES,使用lldb调试器-如果您不熟悉它,它是一个很棒的工具。
@interface MyAnnotation : NSObject <MKAnnotation> {


}


//MKAnnotation
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

@end

@implementation MyAnnotation
@synthesize coordinate;


@end
@interface MyAnnotationView : MKAnnotationView {

}

@end

@implementation MyAnnotationView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, 38, 43)];
    if (self) {
        // Initialization code
        UIImage* theImage = [UIImage imageNamed:@"partyPin.png"];

        if (!theImage)
            return nil;
        self.image = theImage;
    }
    return self;
}

@end
- (MKAnnotationView *)mapView:(MKMapView *)lmapView viewForAnnotation:(id <MKAnnotation>)annotation {

    MyAnnotationView *myAnnotationView = (myAnnotationView *)[lmapView dequeueReusableAnnotationViewWithIdentifier:@"myView"];
    if(myAnnotationView == nil) {
        myAnnotationView = [[MyAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myView"];
    }

    myAnnotationView.draggable = YES;
    myAnnotationView.annotation = annotation;

    return myAnnotationView;
}

- (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);
    }
}