2009-06-11 24 views
16

Bir iPhone uygulaması için bazı temel sürükle/bırak işlevselliği elde etmeye çalışıyor. şöyle şudur yapmaya çalıştığı içiniPhone sürükle/bırak

Benim geçerli kod:

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

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

Bu kod etrafında dokunuş takip ederken dokundu UIView titreyen sonucunu sahiptir. Bununla biraz uğraştıktan sonra, UIView'in ekran üzerindeki 0,0 konumdan o anda dokunulan yere kadar titreydiğini fark ettim.

Ne yaptığım hakkında bir fikrim var mı?

+0

Bu görünümde hangisi? Uygulamanızda hangi görünümlerin var? –

+0

Uygulama, etkileşimli bileşenler için alt görünümlerle birlikte oluşturmak üzere tek bir görünüm kullanır. Bu kod, UIImageView öğesinden devralınan bir sınıf uygulamasında bulunur. – Simon

cevap

21

Merkez özellik, süper görüntünün koordinat sisteminde belirtilmelidir, ancak alt görünümünüzün konumuyla ilgili dokunma olayını sordunuz. Bunun yerine superview'in koordinatlarına dayanarak bunları şu şekilde sorabilirsiniz:

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

    self.center = location; 
} 
+0

Onu özlemiş bir çözüm çok açık görünüyor, aptalca. Yarın kontrol edip sonuca geri dönecek, teşekkürler! – Simon

+0

Tüm şimdi çalışıyor, tekrar teşekkürler. – Simon