Pregunta

Mientras escribía el controlador touchesBegan para mi punto de vista, me encontré con este interesante error.

Código:

...
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
...

El problema es que point.x siempre es cero, sin importar dónde toque '' e y es un número enorme que fluctúa entre 1070000000 y 1090000000.

Los identificadores están en una clase de vista y funcionan igual si paso nil en lugar de self a locationInView. También intenté recorrer todos los toques, y solo hay uno con x como cero siempre.

Entonces, ¿qué estoy haciendo mal aquí?

¿Fue útil?

Solución

Cualquier posibilidad de que esté usando NSLog (@ "% d,% d " ;, point.x, point.y); imprimir los valores de puntos? Suena como un flotador - > int error de conversión. He usado locationInView: mucho, y nunca he tenido un problema como este.

También puede intentar marcar [self frame] para asegurarse de que no sea cero.

Otros consejos

Ben tiene razón. El problema es cuando intenta imprimir el valor usando % d en NSLog , porque point.x y point.y son valores flotantes.

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