Pregunta

Estoy utilizando - (void) touchesMoved hacer cosas cuando cada vez que introduzca un marco específico, en este caso el área de un botón.

Mi problema es, yo sólo quiero que haga cosas cuando entro en el marco - no cuando me estoy moviendo mi dedo dentro del marco.

¿Alguien sabe cómo puedo llamar a mis métodos de una sola vez mientras estoy en el interior del marco, y aún así permitir que la llame una vez más si volver a introducirla en el mismo TouchMove.

Gracias.

-(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];
    }
}
¿Fue útil?

Solución

Puede utilizar algún atributo para comprobar si el código ya fue llamado cuando estaba entrando en el área específica. Parece que el estado destacado del objeto p1 (no sé lo que es) puede ser apropiada para que:

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];
}

Otros consejos

Simply add a BOOL que compruebe en touchesMoved y restablecer en 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;
  }

trate de usar un UIButton y utilizar el 'arrastrar toque enter' de conexión en el Interface Builder.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top