Перетаскивание iPhone

Попытка получить базовые функции перетаскивания для приложения iPhone.

Мой текущий код для этого заключается в следующем:

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

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

Этот код имеет результат мигания UIView, когда он следит за касанием. Немного поиграв с этим, я также заметил, что UIView, казалось, мерцал от позиции 0,0 на экране до текущего касающегося местоположения.

Любые идеи, что я делаю неправильно?

Ответы

Ответ 1

Свойство центра должно быть указано в системе координат супервизора, но вы запросили событие касания для местоположения с точки зрения вашего подсмотра. Вместо этого попросите их на основе координат супервизора, например:

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

    self.center = location;
}