Pregunta

Permítanme primero escribir el código y luego explicar el problema

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

    1: NSUInteger numTaps=[[touches anyObject] tapCount];
    2: NSString *labelText=[NSString stringWithFormat:@"Number of counts %d",
                                                                    numTaps];
    3: self.tapLabel.Text=labelText;
    4: if (numTaps==1)
    5: NSLog(@"Number of taps is 1");
}

Ahora, como puede ver, asigno el valor tapCount a numTaps en la línea 1. Y en la línea 3, dependiendo del conteo de tap, mi etiqueta muestra el número de conteos 1,2,3,4 .... n.Pero luego, en la línea 4, compruebo si numTaps es igual a 1. Aquí vienen las cosas raras.No importa cuántos toques tenga un toque, el comando en la línea 5 siempre se ejecuta.Así que parece que numTaps es siempre 1. Pero cómo viene en la línea 2, namTaps no siempre es uno.Estoy seguro de que me falta algo, pero no sé qué.

¿Fue útil?

Solución


Por lo que puedo ver, puede ser que hayas olvidado algunos;después de muchos espacios en la línea 4, por lo que se coloca en el área invisible de la pantalla (al menos si no se desplaza hasta allí).Intenta poner la línea 5 dentro de {} bloque así

4: if (numTaps==1){
5:     NSLog(@"Number of taps is 1");
6: }

Siempre es una buena práctica poner el bloque if entre llaves, incluso si solo tiene una línea de código adentro.Puede evitar muchos errores.
Otra posibilidad es que hayas puesto single= en la cláusula if (me pasa mucho).

4: if (numTaps=1)

Eso en realidad asigna 1 a la variable numTaps, por lo que cuando el código es uno, es 1 adentro.

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