2009-07-27 5 views
5

Ich versuche, eine UIImageView um den iPhone-Bildschirm in meiner App zu ziehen.iPhone SDK: Problem beim Ziehen einer UIImageView

Derzeit ist die Drag - Funktionalität, die ich eingerichtet habe, in Ordnung und ziehen das Bild bewegt es auf dem Bildschirm, das Problem ist, dass Sie nicht die Bildansicht ziehen müssen, um es zu verschieben, können Sie auch an der Bildschirm und es wird das Bild bewegen. Ich bin neu auf dieser Plattform, so dass ich nicht wirklich darüber nachdenken kann, was zu tun ist, um dieses Problem zu lösen. Mein aktueller Code, um das Bild zu ziehen ist:

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    CGPoint pt = [[touches anyObject] locationInView:pig]; 
    startLocation = pt; 


} 
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { 
    CGPoint pt = [[touches anyObject] locationInView:pig]; 
    CGRect frame = [pig frame]; 
    frame.origin.x += pt.x - startLocation.x; 
    frame.origin.y += pt.y - startLocation.y; 
    [pig setFrame: frame]; 
} 

Jede Hilfe sehr geschätzt. Übrigens ist Schwein die UIImageView. Auch ich habe festgestellt, dass, wenn ich die Benutzerinteraktion der Bildansicht "Schwein" zu aktivieren, das Bild nicht mehr ziehen kann, aber wenn es nicht aktiviert ist, ist es.

Antwort

0

Sie können versuchen, UIImageView abzuleiten und touchesBegan: und touchesMoved: direkt darauf zu implementieren. Wählen Sie dann in InterfaceBuilder Ihre Unterklasse für die UIImageView aus.

alt text http://img.skitch.com/20090728-xetretcfubtcj7ujh1yc8165wj.jpg

Oh ja, jetzt müssen Sie erneut die Interaktion mit dem Benutzer setzen ...

+0

Vielen Dank, das hat den Trick perfekt gemacht! – Sam

+0

self.userInteractionEnabled = YES; ... Es ist immer das Gleiche, und es ist immer das, was ich falsch mache! Danke Epatel, groß :-) –

0

Sie müssen es in einzuschließen beginnen/Animationssequenzen zumindest in der Timer-Thread zu begehen:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.02] /* 0.02 seconds suration*/ 

/* move pig coordinates here */ 

[UIView commitAnimations]; 

Speichern Sie die neue Bewegung in touchesMoved und sie dann in dem Timer-Thread zu verarbeiten.

0

Sie eine UIView Kategorie verwenden können, um es ziehbar zu machen und die ziehbar Bereich definieren: https://github.com/rtoshiro/TXDragAndDrop

+0

Beachten Sie, dass [Link-Only-Antworten] (http://meta.stackoverflow.com/tags/link-only-answers/info) entmutigt werden, SO-Antworten sollten der Endpunkt eines sein Suche nach einer Lösung (im Gegensatz zu einem weiteren Zwischenstopp von Referenzen, die im Laufe der Zeit abgestanden werden). Bitte beachten Sie, dass Sie hier eine eigenständige Zusammenfassung hinzufügen und den Link als Referenz beibehalten – kleopatra