Pregunta

Estoy teniendo mi primera incursión en la programación Cocoa Touch (y uno de mis primeros en Cacao en general) y escribir un simple juego para el iPhone, aunque esta pregunta es sobre el tacto de cacao en general.

La interfaz de usuario principal se compone de una tira de botones de actuación idénticas (solamente varían en color) dispuesta horizontalmente a través de la pantalla. A pesar de que actúan como botones que necesitan tener una apariencia dibujado personalizado. Cada uno responde al tacto eventos de la misma manera, lo que provocó otros eventos en la aplicación.

quiero definir una vista personalizada, en parte para tener más control sobre el comportamiento que tener un montón de botones estándar, y en parte para obtener más información sobre la programación de cacao.

  • ¿Debo definir una vista principal con una serie de subvistas cada uno de los cuales señala a sí mismo y toque hacia delante eventos? Cada botón debe hacer cosas normales como mostrar un estado presionado cuando se toca y así sucesivamente . ¿Hay puntos de vista de contenedores ya existentes de este tipo de escenario?

  • ¿O debo definir una vista principal que atrae a toda la tira y detecta cuando se produce un toque Siento que este es un enfoque mal dirigido -? No debería estar afectado de programación de pruebas código.


Editado para aclarar la cuestión

¿Fue útil?

Solución

El enfoque más ligero es añadir subcapas a la capa de su UIView. Utilice hitTest:. Despachar toques que recibe de usted UIView a la instancia CALayer que debe recibirlo

Si necesita más del comportamiento UIResponder (touchesBegan etc.), es posible que quiera ir con subvistas en lugar de sub-capas, ya que ello permitirá manejar los eventos directamente en los objetos en lugar de tener que enviarlos desde un centro de respuesta (UIView su principal).

En consecuencia, el bit esencial puede ser justo la cantidad del comportamiento asociados con sus botones individuales debe ser conocido (manejado) por el que su UIView principal. Si tiene sentido tener todo controlado desde un lugar central, se puede poner toda la lógica en el UIView y sólo tiene que utilizar subcapas para fines de visualización de peso ligero. Si tiene más sentido para poner el comportamiento en los botones de sí mismos, sean shoudl UIResponders y como tal UIView subclase y agregarse como subvistas de su vista principal.

Otros consejos

Se debe utilizar una gran variedad de subvistas -. De esa manera cada clase "botón" sabe cómo dibujar en sí y su supervista (declarado su "vista principal") coloca los botones donde tienen que ir

Y en segundo lugar en la NDA: sólo hablar sobre el iPhone

.

Si usted tiene un montón de botones y quiere hacer cosas interesantes con ellos, recomiendo el uso de capas . Su UIView se encargará de interpretar qué capa tenía el toque (prueba de zona) y  responda apropiadamente. Si todo lo que estamos haciendo es la gestión de un manojo entero de botones con diferentes efectos y animaciones, esto podría ser una ruta más fácil.

En cuanto a la ingeniería mal, en absoluto. Si se echa un vistazo a las guías asociadas, verá la animación núcleo y las capas de no requerir pruebas de posicionamiento (aunque eso es relativamente fácil), pero es mucho más limpio que el UIView hacer todo el dibujo y más eficiente que muchos subvistas. Se desliza a la derecha entre esos dos enfoques agradable.

La revelación completa: estoy envolver mi cabeza alrededor de cómo aprovechar mejor estas cosas a mí mismo, pero para los controles interactivos más complicados

.

Puede disposición de su punto de vista en el Interface Builder. Basta con arrastrar un montón de UIButtons en vista de su controlador de vista.

Para responder a eventos, se define una IBAction en su controlador de vista y conectar los botones a la misma.

Todo esto es muy básico. Realmente recomiendo que por lo menos caminar a través de la introducción de programación iPhone que Apple tiene en línea. Se le enseñará lo básico de la interfaz de iPhone y constructor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top