Кажется, ты немного усложняешь это.Если вы реализуете touchesMoved, вы хотите перетащить.Если вас больше интересует тап, то вам нужно реализовать touchesEnded.В любом случае, вам просто нужно увидеть местоположение и обновить центр вашего UIView на основе этого местоположения.Если вы перенесете изменение в центральное значение в блоке анимации UIView, оно будет анимировано в позицию при обновлении.
Если вы используете iOS 3.2 или более позднюю версию, вы можете использовать распознаватели жестов, что делает это довольно тривиальным:
// In viewDidLoad or some such
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(viewWasTapped:)];
[[self view] addGestureRecognizer:tapRecognizer];
Затем объявите ваш селектор действий:
- (void)viewWasTapped:(UITapGestureRecognizer*)recognizer
{
CGPoint location = [recognizer locationInView:[self view]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f]; // take a second to animate
[viewToMove setCenter:location];
[UIView commitAnimations];
}
Это оживит вид из одного места в другое.Это называется неявной анимацией.Использование классов Core Animation, таких как CAKeyframeAnimation или CABasciAnimation, будет явной анимацией.