Consultar número actual de toques en la pantalla sin necesidad de utilizar los eventos en el iPhone

StackOverflow https://stackoverflow.com/questions/2662220

Pregunta

Tengo una aplicación que se empieza a reproducir un sonido cuando el usuario toca la UIView y cambiando a diferentes tonos como las diapositivas de usuario con el dedo en la pantalla. El sonido se detiene cuando el usuario levanta el dedo.

Estoy utilizando el touchesBegan, movidos y terminó de eventos para esto.

Mi problema se termina toques (y / o cancelada) a veces no se dispara correctamente y el sonido sigue sonando incluso después de que el dedo se levanta de la pantalla.

Así como una solución me gustaría implementar un temporizador que comprobar si el número de toques en la pantalla y si es cero se comprobará y detener el juego si audioplayer.

He estado buscando algo de código que me pudiera obtener el número de detalles como

UITouch * toques = [auto getAllTouchesonScreen];

o algo:)

¿Fue útil?

Solución

Toques terminados Evento veces no ser despedido.

He intentado fijar puntos de separación para toques cancelados y toques terminado eventos y éxito a veces no funciona.

probar el programa de ejemplo GLPaint desde el sitio web de Apple y tratar una NSLog en toches finalizados y hacer algunos dibujos rápidos en la pantalla y levante el dedo rápido, como tirar el dedo de la pantalla.

sabrá lo que quiero decir. Mi solución actual para este implica acelerómetro:)

Sugerencia: Lo utilizo para encontrar todos los eventos: (void) sendEvent: (UIEvent *) evento

Otros consejos

NSSet *allTouches = [event allTouches];
for(GLuint index = 0; index < [allTouches count]; ++index)
{
    UITouch *touch = [[allTouches allObjects] objectAtIndex:index];
    if([touch phase] != UITouchPhaseCancelled)
    {
        CGPoint touchPoint = [touch locationInView:self];
        //do something with touchPoint that has state [touch phase]
    }
}

Se puede utilizar este código en todas las funciones de eventos táctil (touchesBegan, touchesEnded, touchesMoved) y puede contar toques y conocer sus estados.

No se olvide de touchesCanceled. Añadir esta función / método y NSLog que cuando una entrada táctil termina allí, creo que encontrará algunos detalles que faltan.

Si usted está buscando un recuento del grifo - tocando en el mismo lugar más de una vez sin mover el dedo mucho - lo puede conseguir a través de:

-(void)iPhoneTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];
CGPoint touchPosition = [touch locationInView:self];
lastTouchTime = [touch timestamp];
myTouchCount = [touch tapCount];

Pero también lo hago de forma manual utilizando touchesMoved ver hasta qué punto se movía y la cancelación de la capacidad de doble / triple del grifo si alguno de los grifos se movieron demasiado lejos, y grifos de conteo, siempre y cuando usted está en un estado del grifo válida.

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