Frage

Ich verwende - (void) touchesMoved Sachen zu tun, wann immer ich eingeben ein bestimmter Rahmen, in diesem Fall der Bereich einer Taste.

Mein Problem ist, ich will es nur Dinge tun, wenn ich den Rahmen eingeben - nicht , wenn ich meinen Finger in dem Rahmen bewegte.

Wer weiß, wie ich meine Methoden aufrufen kann nur einmal, während ich im Inneren des Rahmens bin und immer noch erlauben Sie mir, es zu nennen noch einmal, wenn ich erneut eingeben es in der gleichen touchmove.

Danke.

-(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];
    }
}
War es hilfreich?

Lösung

können Sie einige Attribut Prüfung verwenden, wenn der Code bereits genannt wurde, wenn Sie bestimmten Bereich eintraten. Es sieht aus wie hervorgehoben Zustand p1 Objekt (nicht sicher, was es ist) kann das sinnvoll sein:

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

Andere Tipps

Simply add a BOOL, dass Sie in touchesMoved überprüfen und Zurücksetzen 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;
  }

versuchen, eine UIButton mit und verwenden Sie die "Touch Drag eingeben -Verbindung im Interface Builder.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top