Прежде всего, этот код работает отлично, он делает именно то, что мне нужно, но, просмотрев его, я что-то упускаю.Перемещение UIView на экране, почему это работает?
У нас есть карточка. При касании карта перемещается. Когда в каком-то месте он отправляется в это место.
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
...
// Take note of the starting position and current position, both the same
startTouchPoint = pt;
currentTouchPoint = pt;
...
}
-(void) touchesMoved:(NSSet *) touches withEvent:(UIEvent *)event {
...
// As touch moves around the screen, current touch point is
// updated with it's new location
currentTouchPoint = [first locationInView:self];
...
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
...
// If something happens, put card in a given location
cardCurrentlyBeingTouched.xPosition = 300;
cardCurrentlyBeingTouched.yPosition = 150;
...
}
-(void) drawRect:(CGRect)rect {
...
// Card moving around the screen
cardCurrentlyBeingTouched.xPosition += (self.currentTouchPoint.x - startTouchPoint.x);
cardCurrentlyBeingTouched.yPosition += (self.currentTouchPoint.y - startTouchPoint.y);
CGPoint moveToLoc = CGPointMake(cardCurrentlyBeingTouched.xPosition, cardCurrentlyBeingTouched.yPosition);
[self addSubview:[cardCurrentlyBeingTouched uiImageViewAtPoint:moveToLoc rotated:0 withFaceImage:YES]];
startTouchPoint.x = currentTouchPoint.x;
startTouchPoint.y = currentTouchPoint.y;
...
}
Так, в drawRect
(во все времена) self.currentTouchPoint.x
такое же, как startTouchPoint.x
(как Y), как в X мировой карты и Y позиции меняются, если дельта всегда 0? (позиции X и Y равны CGPoints
, когда я распечатал их для сравнения, я напечатал поплавки)
Может ли это быть точной проблемой?
Это мой код, я написал его, он работает. Но почему? :)