Question

J'utilise - (void) touchesMoved à faire des choses à chaque fois que je entrez un cadre spécifique, dans ce cas, la zone d'un bouton.

Mon problème est, je veux seulement à faire des choses quand je rentre dans le cadre - pas quand je me déplace mon doigt à l'intérieur du cadre.

Quelqu'un sait comment je peux appeler mes méthodes qu'une seule fois alors que je suis à l'intérieur du cadre, et permettez-moi encore l'appeler une fois de plus si je re-entrer dans le même touchMove.

Merci.

-(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];
    }
}
Était-ce utile?

La solution

Vous pouvez utiliser un attribut pour vérifier si le code a déjà été appelé lorsque vous entrez dans la zone spécifique. Il ressemble à l'état mis en évidence l'objet de p1 (pas sûr de ce qu'il est) peut être approprié pour 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];
}

Autres conseils

Simply add a BOOL que vous archivez touchesMoved et Remise à zéro 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;
  }

essayez d'utiliser un UIButton et utiliser la connexion « glisser contact entrer » dans Interface Builder.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top