Come chiamare un metodo solo una volta durante - (void) touchesMoved?
-
19-09-2019 - |
Domanda
Sto usando - (void) touchesMoved
per fare cose quando mai I Invio un fotogramma specifico, in questo caso l'area di un pulsante.
Il mio problema è, ho solo voglio fare cose quando entro la cornice - non quando mi sto muovendo il dito all'interno del telaio.
Qualcuno sa come posso chiamare i miei metodi solo una volta, mentre io sono all'interno del telaio, e ancora mi consenta di richiamare ancora una volta se il rientro nella stessa TouchMove.
Grazie.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(p1.frame, location))
{
//I only want the below to me called
// once while I am inside this frame
[self pP01];
[p1 setHighlighted:YES];
}else {
[p1 setHighlighted:NO];
}
}
Soluzione
È possibile utilizzare alcuni attributi per verificare se il codice è stato già chiamato quando eri entrando specifica area. Sembra che lo stato evidenziato dell'oggetto p1
(non so cosa sia) può essere appropriato per questo:
if(CGRectContainsPoint(p1.frame, location))
{
if (!p1.isHighlighted){ // We entered the area but have not run highlighting code yet
//I only want the below to me called
// once while I am inside this frame
[self pP01];
[p1 setHighlighted:YES];
}
}else { // We left the area - so we'll call highlighting code when we enter next time
[p1 setHighlighted:NO];
}
Altri suggerimenti
Simply add a BOOL
che il check-in touchesMoved e ripristinare in touchesEnded
if( CGRectContainsPoint([p1 frame],[touch locationInView:self.view])) {
NSLog (@"Touch Moved over p1");
if (!p14.isHighlighted) {
[self action: p1];
p1.highlighted = YES;
}
}else {
p1.highlighted = NO;
}
provare a utilizzare un UIButton e utilizzare il 'drag tocco entrare' di connessione in Interface Builder.