Inizia con touchesBegan
, touchesMoved
, touchesEnded
. Esegui l'override di questi nella sottoclasse di UIView e sarai sulla buona strada per imparare il sistema degli eventi. È possibile ottenere l'evento coordinate in questo modo:
- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event
{
float x = [[touches anyObject] locationInView:self].x;
float y = [[touches anyObject] locationInView:self].y;
}
Poi c'è un sacco di roba per la conversione di coordinate tra i diversi punti di vista e così via. Una volta capito, puoi lavorare con la roba UIGestureRecognizer
che hai già trovato, che è ciò di cui hai bisogno.
Avrai bisogno di un indicatore di movimento pan per eseguire il trascinamento. Puoi utilizzare il selettore locationInView:
in UIPanGestureRecognizer
per scoprire dove ti trovi in un dato momento.
si aggiunge il sistema di riconoscimento gesto in questo modo, non con la roba target-azione si stava tentando:
UIPanGestureRecognizer *dragDropRecog = [[UIPanGestureRecognizer alloc] initWithTarget:yourView action:@selector(thingDragged:)];
[yourView addGestureRecognizer:dragDropRecog];
poi si deve implementare il selettore thingDragged:
nella vista:
- (void) thingDragged:(UIPanGestureRecognizer *) gesture
{
CGPoint location = [gesture locationInView:self];
if ([gesture state] == UIGestureRecognizerStateBegan) {
// Drag started
} else if ([gesture state] == UIGestureRecognizerStateChanged) {
// Drag moved
} else if ([gesture state] == UIGestureRecognizerStateEnded) {
// Drag completed
}
}
È Traduceremo la vista trascinata nel bit modificato e gestiremo il calo nella sezione finale.
fonte
2012-11-12 22:25:49
l'utente deve aggiungere questo nel viewDidLoad: UIPanGestureRecognizer * panner = [[UIPanGestureRecognizer alloc] initWithTarget: auto azione: @selector (panWasRecognized:)]; [_viewaddGestureRecognizer: panner]; –
Oppure puoi aggiungere il riconoscitore di gesti nello storyboard o XIB. –
giusto, ma quando ho seguito la tua risposta non sapevo che fosse necessario, quindi non ha funzionato con me: D –