如何隐藏MKAnnotationView?

时间:2014-01-26 12:06:50

标签: ios objective-c mkmapview mkannotationview

我在一段时间[4秒]后隐藏MKAnnotationView时遇到问题。我有一个名为 mapView MKMapView,其中显示了MKUserLocation的用户位置,并在UIButtonTypeDetailDisclosure添加了MKAnnotationViewMKAnnotationView会自动被选中,但我想在NSTimer一段时间后取消选择它。我已经正确实现了计时器,并且正确调用了void方法[我已经用NSLog进行了检查]但我不知道要在void方法中写入什么代码来使注释消失。

这是我的代码:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for (MKAnnotationView* view in views)
    {
        if ([view.annotation isKindOfClass:[MKUserLocation class]])
        {
            view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

            [self.mapView selectAnnotation:view.annotation animated:YES];
        }

        mKAnnotationHideTimer = [NSTimer scheduledTimerWithTimeInterval:4.0
                                                                 target:self
                                                               selector:@selector(hideMKAnnotation:)
                                                               userInfo:nil
                                                                repeats:NO];
    }
}

- (void)hideMKAnnotation:(NSArray *)views
{
   // What code here?
}

有人可以帮我写代码吗?

1 个答案:

答案 0 :(得分:2)

您需要将view.annotation作为userInfo对象传递,并将hideMKAnnotation实现为

- (void)hideMKAnnotation:(NSTimer*)timer
{ 
     id aview = timer.userInfo;
     [self.mapView deselectAnnotation:aview animated:YES];
}