UIView touch coordenadas de ubicación
coordinates superview (1)
Tu condición es incorrecta. El corredor según este es un cuadrado, con su centro en (0, 0) en lugar de shuttle.center
. Tratar
CGFloat dx = touch.x - centre.x;
CGFloat dy = touch.y - centre.y;
CGFloat r2 = dx*dx + dy*dy;
if (r2 < outerRadius*outerRadius) {
NSLog(@"in outer");
if (r2 > innerRadius*innerRadius)
NSLog(@"in corridor")
}
en lugar.
Incluso si se espera que el pasillo sea un cuadrado, debe verificar con fabs(dx), fabs(dy)
no touch.x, touch.y
.
¿Cuáles son las coordenadas utilizadas en UIViews y sus supervistas correspondientes? Tengo este código que me gustaría detectar un ''corredor'' donde el usuario puede tocar ... similar a esta imagen: texto alternativo http://img17.imageshack.us/img17/4416/bildschirmfoto20100721u.png
Este es el código que tengo:
CGPoint touch = [recognizer locationInView:[shuttle superview]];
CGPoint centre = shuttle.center;
int outerRadius = shuttle.bounds.size.width/2;
int innerRadius = (shuttle.bounds.size.width/2) - 30;
if ((touch.x < outerRadius && touch.y <outerRadius)){
NSLog(@"in outer");
if(touch.x > innerRadius && touch.y > innerRadius) {
NSLog(@"in corridor");
}
}
Los radios son aproximadamente 500 y 600, y el touch
x y y son 100 y 200 ...
Por lo tanto, nunca se llama al NSLog "en corredor".
Gracias