在UITableViewCell上时,MKPointAnnotation在mapView上闪烁。怎么阻止它?

时间:2017-11-21 22:04:39

标签: ios swift uitableview mkmapview mkannotation

我在UITableViewCell上有一个mapView,当我显示mapView时,注释会打开和关闭。我不知道如何让它停下来。

我通过

设置了mapView
if let event = event {
            mapView.showsUserLocation = true
            mapView.isUserInteractionEnabled = true

            let center = CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude)
            //Create annotation
            let annotation = MKPointAnnotation()
            annotation.coordinate = center
            mapView.addAnnotation(annotation)

            let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.005, longitudeDelta: 0.005))

            mapView.setRegion(region, animated: true)
        }

我已确保注释仅添加到地图一次。 以下是https://youtu.be/lkpn9Rqd0AE发生的视频 此外,这只发生在没有用户交互的情况下,如果我滚动它停止这样做,如果我与地图交互它也会停止闪烁。

我创建了一个测试项目并且它没有这个问题,即使我复制并粘贴了上面的代码。我不知道有什么不同。

2 个答案:

答案 0 :(得分:0)

如何使用Timer?

var timer: Timer!

func foo {
    timer = Timer.scheduledTimer(timeInterval: 1.0,
                                 target: self,
                                 selector: #selector(self.update),
                                 userInfo: nil,
                                 repeats: true)
    timer.fire()
}

func update(tm: Timer) {
    for annotation in self.mapView.annotations {
        if annotation is MKUserLocation { continue }
        if let annotationView = mapView.view(for: annotation) {
            annotationView.isHidden = !annotationView.isHidden
        }
    }
}

别忘了停止计时器。

timer.invalidate()

答案 1 :(得分:0)

在联系苹果开发者支持后,他们告诉我这是一个不是由我的代码引起的错误。

Apple已经表示会删除并添加一些内容来查找哪些内容,或者使用最新版本的Xcode来解决这个问题。下载最新版本的Xcode解决了我的问题。