Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone drag/drop

Trying to get some basic drag/drop functionality happening for an iPhone application.

My current code for trying to do this is as follows:

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

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

This code has the result of a the touched UIView flickering while it follows the touch around. After playing around with it a bit, I also noticed that the UIView seemed to flicker from the 0,0 position on the screen to the currently touched location.

Any ideas what I'm doing wrong?

like image 980
Simon Avatar asked Jun 11 '09 05:06

Simon


1 Answers

The center property needs to be specified in the coordinate system of the superview, but you've asked the touch event for the location in terms of your subview. Instead ask for them based on the superview's coordinates, like this:

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

    self.center = location;
}
like image 157
zpasternack Avatar answered Oct 22 '22 18:10

zpasternack