【问题标题】:mapView:annotationView:calloutAccessoryControlTapped: is giving me a UITouchesEvent instead of a MKAnnotationView?mapView:annotationView:calloutAccessoryControlTapped: 是给我一个 UITouchesEvent 而不是 MKAnnotationView?
【发布时间】:2011-03-29 18:10:45
【问题描述】:

我正在尝试在我的 iPhone 应用程序中实现 mapView:annotationView:calloutAccessoryControlTapped: 方法。该方法被调用,但是当我尝试使用传递给它的视图时

注解* temp = (注解 *)view.annotation;

应用程序因错误而崩溃。

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

在调试器中,视图似乎是 UITouchesEvent,而不是 MKAnnotationView。

我已经阅读了人们使用此方法遇到的其他问题,但他们都在使用传入视图的注释属性后使其工作。这对我不起作用。

【问题讨论】:

    标签: iphone annotations mapkit mkannotation mkannotationview


    【解决方案1】:

    在viewForAnnotation方法中,设置callout附件视图的时候,是不是在按钮上做addTarget? (如果是,请不要。)

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

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

    【讨论】:

    • BAM 这就是问题所在!这也解释了为什么该方法被调用两次。非常感谢! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2014-10-07
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多