iPhone SDK: Problemi Trascinando un UIImageView
-
19-09-2019 - |
Domanda
Sto cercando di trascinare un UIImageView intorno allo schermo iphone nella mia app.
Al momento la funzionalità di trascinamento Ho installato è bene e trascinando l'immagine non spostarlo intorno allo schermo, il guaio è che non c'è bisogno di trascinare la visualizzazione dell'immagine per spostarla, è anche possibile trascinare un punto qualsiasi dello schermo ed esso si sposterà l'immagine. Sono nuovo di questa piattaforma, quindi non posso davvero pensare a cosa fare per risolvere questo problema. Il mio codice corrente per trascinare l'immagine è:
- (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];
}
Qualsiasi aiuto apprezzato. Tra l'altro maiale è l'UIImageView. Inoltre ho notato che se ho impostato l'interazione con l'utente della Vista "maiale" e attivare l'immagine non è più in grado trascinare, ma quando non è impostato su abilitato E '.
Soluzione
Si può cercare di creare una sottoclasse UIImageView e implementare touchesBegan:
e touchesMoved:
su di esso direttamente. Poi, nel InterfaceBuilder selezionare la sottoclasse per l'UIImageView.
alt text http://img.skitch.com/20090728-xetretcfubtcj7ujh1yc8165wj.jpg
Oh sì, ora è necessario impostare di nuovo l'interazione con l'utente ...
Altri suggerimenti
È necessario racchiuderla tra inizio / commit sequenze di animazione, almeno nel tuo thread Timer:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.02] /* 0.02 seconds suration*/
/* move pig coordinates here */
[UIView commitAnimations];
Salvare il nuovo movimento in touchesMoved e poi elaborarli nel thread del timer.
È possibile utilizzare una categoria di UIView per rendere trascinabile e definire l'area trascinabili: https://github.com/rtoshiro/TXDragAndDrop