Cómo realizar el seguimiento toques en su aplicación para ios

Sería agradable ser capaz de arrastrar un coche y colocarlo en cualquier lugar de la pantalla en su aplicación para iOS. A continuación, encontrará la manera de codificar para arrastrar un objeto, así como la forma toques trabajan en un dispositivo iOS.

El toque de un dedo (o de separarlo de la pantalla) añade un evento de toque a la cola de eventos de la aplicación, donde es encapsulado (Contenido) en una UIEvent objeto. UN UITouch Existe objeto para cada dedo tocando la pantalla, lo que permite realizar un seguimiento toques individuales.

los touchesBegan: withEvent: el mensaje se envía cuando uno o más dedos toquen en una vista. Este mensaje es un método de la TestDriveControllersuperclase ‘s, UIResponder, de la que el controlador de vista se deriva.

A medida que el usuario continúa tocando la pantalla con sus dedos, el sistema informa de los cambios para cada dedo en los correspondientes UITouch objeto, enviando así el touchesMoved: withEvent: mensaje. los touchesEnded: withEvent: el mensaje se envía cuando uno o más dedos de levantar la vista asociada. los touchesCancelled: withEvent: mensaje, por el contrario, se envía cuando un evento del sistema (como un aviso de baja memoria) cancela un evento de toque.

En esta aplicación, es necesario preocuparse solamente con los dos primeros métodos que acabamos de describir.

Para comenzar el proceso de responder a un evento de contacto, añadir una nueva variable de instancia (en negrita) a la TestDriveController.m archivo de implementación.

@interface TestDriveController () {* AVAudioPlayer backgroundAudioPlayer-SystemSoundID burnRubberSoundID- BOOL touchInCar-}-re

A continuación, añadir el touchesBegan: método para TestDriveController.m para iniciar el seguimiento toques. (En realidad estás anulando este método porque UIViewController heredado de la UIResponder clase base.)

- (Void) touchesBegan: (NSSet *) toca withEvent: (UIEvent *) evento {UITouch * toque = [toca anyObject] -Si (CGRectContainsPoint (self.car.frame, [contacto locationInView: self.view])) touchInCar = SÍ -else {touchInCar = NO- [súper touchesBegan: toca withEvent: evento] -}}

Como se mencionó anteriormente, el touchesBegan: withEvent: el mensaje se envía cuando uno o más dedos toquen en una vista. Los toques mismos se pasan al método en una NSSet objeto - una colección desordenada de elementos distintos.

Video: Mejores APPS para EDICION de VIDEO en iOS

Para acceder a un objeto en NSSet, utilizar el anyObject método - que devuelve uno de los objetos del conjunto. Para nuestros propósitos, que está asumiendo un solo objeto -, pero es posible que desee explorar esta cuestión en su propia manera que pueda comprender cómo manejar posibilidades adicionales.

El código siguiente muestra cómo configurar el anyObject método:

Video: IPHONE DA TOQUES ELECTRICOS, *TRUCOS DE INTERNET*

UITouch * = [táctiles toques anyObject] -

A continuación, tienen el código de evento de determinar si el toque del usuario está en el Coche (UIImage) Vista:

Video: Cómo subir tu aplicación de iOS o iPhone a la App Store

 si (CGRectContainsPoint (self.car.frame, [locationInView touch: self.view]))

CGRectContainsPoint es una función que devuelve cuando un rectángulo (coordenadas de vista) contiene un punto. Se especifica el auto de marco como el rectángulo:

self.car.frame

y especifica el punto mediante el envío de la locationInView: mensaje al tacto:

locationInView: self.view

locationInView: devuelve la ubicación actual del receptor en el sistema de coordenadas del punto de vista determinado. En este caso, usted está utilizando la vista principal, pero es posible que desee cambiar la vista si está tratando de determinar la ubicación dentro de otro punto de vista, por ejemplo. Tal vez el usuario está en contacto con un pedal de gas pequeñita.

Si se determina que el contacto está en el coche, se asigna al touchInCar instancia variable si no lo es, se asigna NO y reenviar el mensaje en la cadena de respondedor. Tu usas touchInCar después para determinar si el usuario está arrastrando el coche o simplemente pasando el dedo sobre la pantalla.

La implementación predeterminada de touchesBegan: no hace nada. Sin embargo, las subclases derivan directamente de UIResponder, particularmente UIView, reenviar el mensaje en la cadena de respondedor. Para reenviar el mensaje a la siguiente respuesta, enviar el mensaje a súper (La implementación de la superclase).

Si anula touchesBegan: withEvent: sin llamar súper (Un patrón de uso común), también debe prevalecer sobre los demás métodos para el manejo de eventos de toque, aunque sólo sea como trozo (vacío) implementaciones.

Múltiples toques están desactivados por defecto. Para permitir que su aplicación reciba múltiples eventos de toque, debe establecer el multipleTouchEnabled propiedad de la instancia vista correspondiente a la .

A medida que los usuarios se mueven alegremente el coche alrededor de la pantalla (tal vez diciendo cerca cerca a sí mismos), constantemente se está enviando su aplicación para la touchesMoved: mensaje. Añadir el código del listado 10-13 a TestDriveController.m para anular ese método, que le permitirá mover el coche hacia donde el dedo del usuario es.

- (Void) touchesMoved: (NSSet *) toca withEvent: evento (UIEvent *) {if (touchInCar) {UITouch * = [táctiles toques anyObject] -self.car.center = [toque locationInView: self.view] -} else [ súper touchesMoved: toca withEvent: evento] -}

Si el primer contacto fue en el Coche Ver (touchInCar es ), Se asigna el coche de centrar alojamiento hasta el toque de coordenadas. Cuando se asigna un nuevo valor a la centrar la propiedad, la ubicación de la vista se cambia inmediatamente. De lo contrario, se ignora el tacto y reenviar el mensaje en la cadena de respuesta.

Es interesante observar que cuando se coloca el coche junto a un botón, se desplazará en esa tecla cuando se toca el botón de prueba de manejo. Esta característica muestra la estructura subvista.

Experimentar con el coche en movimiento alrededor y luego con el botón de prueba de manejo. Si hay algo mal con sus fórmulas para posicionar el coche durante la prueba, verá que cuando el coche se inicia desde un lugar diferente.

Artículos Relacionados