Me gustaría trabajar con una anotación una vez que se hace clic en él. He buscado en la documentación de Apple y me hizo buscado en google pero no puedo encontrar por qué esto es diferente de cómo debe hacerse.
Básicamente, no tengo println("Pin clicked");

¿Por qué no?

Me ha importado mapa y el kit incluye la vista de mapa delegado.

Es el mapa de la vista delegate conjunto de propiedades? Si no, el delegado método no se llama. También asegúrese de que la anotación del title (que se establece en subject) no está en blanco o nulo.
Dos independientes cosas: 1) Cuando la configuración de location, la latitud es ajustado a la longitud y la longitud se establece en langitude que parece al revés. 2) La viewForAnnotation función como escrito es inútil. Devuelve una vista, pero el código no hace nada con ella y no es el nombre correcto como la vista del mapa del delegado del método. Debe llamarse func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! y la vista del mapa del delegate se debe establecer. Se supone que no deben llamar directamente.
Yo no fijar la Vista de mapa delegado del pienso. Yo ahora establece que : mapView.delegado = auto. Ahora, no pines se muestran (anteriormente pines hizo mostrar, no sólo con el evento click tirado)
¿Tiene el mapView(mapView:viewForAnnotation:) método implementado? Si lo hace, comentario y ver si los pines se muestran.
Si un comentario el mapView viewforannotation función muestra los pines. He actualizado el post principal con la versión actual de viewforannotation.

OriginalEl autor Kraishan | 2014-11-03

6 Comentarios

  1. 15

    Para responder a la pregunta original, didSelectAnnotationView había más probabilidades de no recibir llamadas porque la vista del mapa del delegate no se estableció la propiedad. Otra causa común es si la anotación del title está en blanco.

    En la actualización de la pregunta, los pines no se muestran con la forma en que viewForAnnotation se implementa porque crea una MKAnnotationView pero no establece su image de la propiedad. El image propiedad de un MKAnnotationView es nil por defecto, de modo que los pasadores están ahí, pero invisible.

    Si quieres pantalla estándar de alfileres rojos, ya sea:

    • No implementan la viewForAnnotation delegado del método y de la vista de mapa se mostrará alfileres rojos por defecto.
    • Implementar el viewForAnnotation método de delegado y crear una MKPinAnnotationView lugar que muestra automáticamente un «pin» de la imagen.

    Para configurar el pin del image a algunos de imagen personalizada:

    o crear un MKPinAnnotationView lugar y, opcionalmente, establecer su pinColor:

    Hola Anna, muchas gracias por este gran respuesta. Mi problema (como señaló correctamente por usted) fue que yo no tenía un título para la vista. ¿Qué hago si no desea establecer un título? ¿Hay alguna otra opción?
    Vlad, ¿de encontrar una respuesta a su pregunta? Yo también quiero hacer una vista personalizada que tiene una etiqueta en él. El problema es que si puedo poner el título que aparece en mi punto de Vista, pero también a la derecha, junto a mi vista personalizada
    El título en blanco fijo para mí. Más específicamente, se me había borrado accidentalmente «- (NSString *)título;» declaración de mi .h archivo.

    OriginalEl autor

  2. 6

    En mi caso el problema era que yo era el establecimiento de la propiedad canShowCallout en SÍ, por lo que si establece esta propiedad en SÍ

    no es llamado. cuando me he quitado esta propiedad, el método fue llamado.

    canShowCallout = false para Swift resuelto para mí. Gracias 🙂
    A mí me funciona, muchas gracias.

    OriginalEl autor GOrozco58

  3. 2

    Quería agregar esto como un comentario a GOrozco58 respuesta, pero no tiene suficiente reputación para hacer comentarios.

    GOrozco58 es correcto si usted tiene canShowCallout establece en SÍ, el didSelectAnnotation no se llama a si el título es nulo.

    Si quieres didSelectAnnotation a ser llamados, y también han canShowCallout se establece en SÍ, asegúrese de agregar un título.

    a continuación, permite obtener algunas rep!

    OriginalEl autor KAN

  4. 2

    En la última versión de Swift, la declaración del método ha cambiado a partir de este:

    a este:

    OriginalEl autor CamQuest

  5. 1

    En mi caso yo estaba usando el traje de anotación y el didSelectAnnotationView no estaba siendo llamado a causa de la imagen de la propiedad de la costumbre de anotación estaba vacía, así que me puse a la imagen y la didSelectAnnotationView comenzó a ser llamado.

    OriginalEl autor Abo3atef

  6. 0

    De Anna sugerencia de la anotación del título no se les ha asignado fue la solución para mi problema. Me tomó un minuto para implementar esta y yo lo hice en gestureRecognizer() función. Aquí está mi ejemplo:

    OriginalEl autor Pigpocket

Dejar respuesta

Please enter your comment!
Please enter your name here