如何在自定义MKAnnotationView中检测触摸? IOS 7

时间:2014-02-12 04:50:32

标签: iphone xcode map annotations mkmapview

这不起作用

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

尝试添加此

  if ([annotation isKindOfClass:[User class]])
     {
         NSString * annotationIdentifier = @"UserAnnotationIdentifier";
         CustomAnnotationView * customAnnotationView = (CustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
         if (!customAnnotationView)
         {
             customAnnotationView = [[CustomAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
             UITapGestureRecognizer *tapGesture =
             [[UITapGestureRecognizer alloc] initWithTarget:self
                                                     action:@selector(calloutTapped:)];
             [customAnnotationView addGestureRecognizer:tapGesture];

然后

    -(void) calloutTapped:(id) sender {
       id<MKAnnotation> annotation = ((MKAnnotationView*)sender.view).annotation;

错误:在__strong id

类型的对象上找不到属性视图

这可行,但并非总是

 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
 {
NSLog(@"didSelectAnnotationView\n");

 }

 - (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
 {
NSLog(@"didDeselectAnnotationView\n");
 }

哪里不好?

1 个答案:

答案 0 :(得分:0)

请尝试此操作。并确保将MKMapViewDelegate设置为该类。

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
    {
        if([view isKindOfClass:[myCustomAnnotaionClass class]])
        {
            //your programming logic here
        }
    }