Итак, у меня есть карта с тоннами аннотаций. У каждой аннотации есть вид выноски по умолчанию, прикрепленный к созданной мной кнопке, которая предположительно переносит пользователя в другой контроллер вида. Сначала эта кнопка работает нормально, но для некоторых аннотаций она не регистрирует касания, пока я не увеличу масштаб аннотации или снова не нажму аннотацию. Я очень потерян. Вот мой код.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
var annotationView = MKAnnotationView()
guard let annotation = annotation as? LocationAnnotation else {return nil}
var identifier = ""
switch annotation.type {
case .nightclub:
identifier = "Nightclub"
case .hookahLounge:
identifier = "Hookah Lounge"
case .bar:
identifier = "Bar"
case .bowling:
identifier = "Bowling Alley"
case .arcade:
identifier = "Arcade"
case .pool:
identifier = "Pool"
}
if let dequedView = mapSF.dequeueReusableAnnotationView(withIdentifier: identifier) {
annotationView = dequedView
} else {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)
}
annotationView.canShowCallout = true
annotationView.isEnabled = true
let button = UIButton()
button.frame = CGRect(x: 0.0, y: 0.0, width: 30.0, height: 30.0)
let image = UIImage(named: "go")
button.setImage(image, for: .normal)
annotationView.detailCalloutAccessoryView?.backgroundColor = UIColor.darkGray
annotationView.rightCalloutAccessoryView = button
}
А вот вспомогательная функция выноски, которая изначально работает, но не работает в случайное время.
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
print("true button tapped")
}
Опять же, моя проблема в том, что оператор print не выполняется для различных аннотаций. Моя консоль будет выводить это утверждение каждый раз, когда я нажимаю кнопку в выноске, но в некоторых других случаях это не так. Я понятия не имею, почему. Буду признателен за любую помощь, так как это одна из моих последних ошибок моего приложения.