2009-06-11 39 views
16

Intentando obtener algunas funciones básicas de arrastrar/soltar para una aplicación de iPhone.Arrastrar/soltar iPhone

Mi código actual para tratar de hacer esto es como sigue:

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event 
{ 
    UITouch *touch = [touches anyObject]; 

    CGPoint location = [touch locationInView:self]; 
    self.center = location; 
} 

Este código tiene el resultado de un UIView el tocado parpadeo mientras se sigue el toque alrededor. Después de jugar un poco con él, también noté que el UIView parecía parpadear desde la posición 0,0 en la pantalla hasta la ubicación actualmente tocada.

¿Alguna idea de lo que estoy haciendo mal?

+0

qué punto de vista es en este? ¿Qué puntos de vista tienes en tu aplicación? –

+0

La aplicación utiliza una única vista para procesar, con subvistas para componentes interactivos. Este código se encuentra en una implementación de clase que hereda de UIImageView. – Simon

Respuesta

21

La propiedad del centro debe especificarse en el sistema de coordenadas de la supervista, pero ha solicitado el evento táctil para la ubicación en términos de su subvista. En lugar preguntar por ellos en base a las coordenadas del SuperView, así:

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:self.superview]; // <--- note self.superview 

    self.center = location; 
} 
+0

Parece una solución demasiado obvia como para no haberla echado, tonto. Lo verificará mañana y te responderé con el resultado, ¡gracias! – Simon

+0

Todos trabajando ahora, gracias de nuevo. – Simon