Cómo manejar el evento de clic en una vista UIView

Estoy escribiendo un juego de cartas simple y ahora me gustaría hacer que la carta click parte de ella. Todas mis tarjetas son objects UIView y hay 2 UIImageView en él para mostrar la parte posterior o el frente de las cartas. Quiero manejar el clic del mouse y realmente no sé cómo hacerlo. ¿Hay una interfaz para agregar? ¡Gracias!

Puede hacer que sus botones de tarjetas (quizás no sea la mejor solución) y manejar events de botones en su código. Puede usar reconocedores de gestos en sus tarjetas o en su supervisión. Puede hacer que cada tarjeta sea una subclass de UIView y anular los methods de UESponder que manejan events táctiles.

O puede ser realmente complicado y hacer que las tarjetas sean de CALayer , y simplemente maneje events de UESponders en su vista principal. Esta última sugerencia probablemente te permita la mayor flexibilidad para animar tus cartas mientras el usuario juega tu juego.

De todos modos, creo que los methods UESponders son lo que buscas. UIView es una subclass de UIResponder, por lo que tendrás que implementarlos en alguna subclass que definas.

¿Has visto la class UIGestureRecognizer ? Es ideal para vincular una llamada de function a algún tipo de interacción. Hay diferentes types de gestos, toques, golpes, sartenes. Parece que un gesto de toque podría ayudarlo a cambiar UIImageView cada vez que se toca la tarjeta.

@Convolution es correcto: use UITapGestureRecognizer para reconocer una pestaña en un object que no tiene ningún evento de clic. Esta es la solución más fácil y más limpia.

La subsorting para reconocer un clic solo vale la pena cuando se está creando un object personalizado que se reutilizará una gran parte del time.

En lugar de usar UIImageView para mostrar las tarjetas, considere usar los UIButtons (con "personalizado" para el tipo de button, de modo que los únicos bordes que se ven son los límites de las imágenes). A continuación, puede configurar sus imágenes de tarjeta para que sean las imágenes de esos botones.

Simplemente configure un button personalizado debajo de la image. Entonces solo tienes que hacer que la image no sea táctil. De esta manera, el método que ha conectado con su button se ejecutará en touchevents.