2009-06-11 4 views
16

Попытка получить базовые функции перетаскивания, используемые для приложения 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 на экране до текущего касающегося местоположения.

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

+0

какой вид это? Какие взгляды у вас есть в вашем приложении? –

+0

Приложение использует один вид для визуализации, с подзонами для интерактивных компонентов. Этот код находится в реализации класса, которая наследуется от UIImageView. – Simon

ответ

21

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

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

    self.center = location; 
} 
+0

Кажется слишком очевидным решение, которое пропустило его, глупо меня. Вы проверите это завтра и вернетесь к вам с результатом, спасибо! – Simon

+0

Все работает сейчас, еще раз спасибо. – Simon