2011-03-29 72 views
0

我想在我的iPhone应用程序中实现mapView:annotationView:calloutAccessoryControlTapped:方法。该方法正在调用,但是当我尝试使用传递给它的视图时mapView:annotationView:calloutAccessoryControlTapped:给我一个UITouchesEvent而不是MKAnnotationView?

注释* temp =(Annotation *)view.annotation;

该应用程序崩溃的错误。

2011-03-29 12:51:54.453植物[3316:207] *终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因: ' - [UITouchesEvent注释]:无法识别的选择发送到实例0x6d13410'

在调试器中,看起来好像视图是UITouchesEvent,而不是MKAnnotationView。

我已经阅读了人们用这种方法得到的其他问题,但是他们在使用传入的视图的注释过程后都能够正常工作。这不适用于我。

回答

2

在viewForAnnotation方法中,当设置标注附件视图时,您是否在按钮上执行addTarget? (如果你是,不知道。)

[rightButton addTarget:self 
    action:@selector(mapView:annotationView:calloutAccessoryControlTapped:) 
    forControlEvents:UIControlEventTouchUpInside]; 

不要添加委托方法为按钮的目标。当按下标注配件时(如果已设置地图视图的代理),委托方法将自动使用正确的参数值调用。如果在viewForAnnotation中有上面的一行,请将其删除。

+0

这是问题的BAM!这也解释了为什么该方法被称为两次。非常感谢! :-) – Rich 2011-03-29 18:38:00

相关问题