2009-06-09 5 views

Antwort

0

Oh ich muss es formuliert haben ... Ich "DO" möchte, dass der Code wiederholt wird, während die Taste "Down" gedrückt wird und wenn der Benutzer den Finger von der Taste nimmt, hört der Code auf zu laufen.

+1

In Zukunft versuchen Sie bitte, Antworten mit Kommentaren zu beantworten, anstatt mit einer anderen Antwort. – Tim

0

Sie können verfolgen, ob Ihre Ansicht ein touchBegan Ereignis ohne eine entsprechende touchEnded empfangen hat oder nicht. Wenn dies der Fall ist, können Sie daraus schließen, dass gerade eine Berührung stattfindet, und den Code weiter ausführen. Zum Beispiel:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    self.touchInProgress = YES; // Assuming you have some property touchInProgress 
    [self runSomeCode]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    self.touchInProgress = NO; 
} 

- (void)runSomeCode { 
    // Do your code here 

    if(self.touchInProgress) { 
     [self runSomeCode] 
    } 
}

Dieses Beispiel nicht berücksichtigt nicht eine Reihe von Dingen, einschließlich der touchesCancelled Verfahren und das entsprechende Gewinde (wenn Sie immer „einige Code“ läuft, bin ich nicht sicher, aber Sie können nie die touchesEnded Methode ausführen - spielen mit performSelector:afterDelay: oder performSelectorInBackground:).

+0

Sie haben den ganzen Code ausprobiert und keine Warnungen oder Fehler erhalten, aber ich habe den Code, den ich wollte, nicht wiederholt, weil er gedrückt wurde:/Ich denke, es ist wieder auf dem Zeichenbrett. –

2

Mit Ihrer Klarstellung glaube ich, dass Sie so etwas wollen. Dies wird die timerFired: Methode alle PERIOD Sekunden aufrufen, während der Finger gedrückt ist.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // timer is an ivar... 
    timer = [[NSTimer scheduledTimerWithTimeInterval:PERIOD 
               target:self 
              selector:@selector(timerFired:) 
              userInfo:nil 
              repeats:YES] 
      retain]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [timer invalidate]; 
    [timer release]; 
    timer = nil; 
} 

- (void)timerFired:(NSTimer *)theTimer 
{ 
    // do stuff 
} 
Verwandte Themen