2010-03-25 12 views
1

J'ai fait des recherches sur le net et la documentation, mais je n'ai rien trouvé de comparable à ce que j'essaie de faire. Je travaille sur une application où je veux charger une vue si un UIButton est maintenu pendant x secondes, un autre s'il est maintenu pendant x + y secondes, etc. J'ai trouvé this tutorial. Le problème que je rencontre est, comment puis-je changer la longueur de la pression sur le bouton? Le tutoriel a changé le nombre de taps.Comment puis-je charger une vue en fonction de combien de temps je possède un UIButton?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSSet *allTouches = [event allTouches]; 

    switch ([allTouches count]) 
    { 
     case 1: // Single touch 
     { 
      // Get the first touch. 
      UITouch *touch = [[allTouches allObjects] objectAtIndex:0]; 

      switch ([touch tapCount]) 
      { 
       case 1: // Single Tap. 
       { 
        // Start a timer 
        timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showAlertView:) userInfo:nil repeats:NO]; 
        [timer retain]; 
       } 
        break; 
       case 2: // Double tap. 
        break; 
      } 
     } 
      break; 
     case 2: // Double touch 
     { 
     } 
      break; 
     default: 
      break; 
    } 

} 

Une suggestion?

Merci! Thomas

Répondre

1

J'ai obtenu ma réponse. J'ai juste commencé un NSTimer sur un événement d'atterrissage, et je me suis arrêté sur la retouche à l'intérieur.

// TRP - On Touch Down event, start the timer 
-(IBAction) startTimer 
{ 
    self.time = 0; 
    // TRP - Start a timer 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; 

    [timer retain];  // TRP - Retain timer so it is not accidentally deallocated 

} 

// TRP - Method to update the timer display 
-(void)updateTimer 
{ 
    time++; 
    NSLog(@"Seconds: %i ", time); 
    if (15 == self.time) 
     [timer invalidate]; 
} 

// TRP - On Touch Up Inside event, stop the timer & display results 
-(IBAction) btn_MediaMeterResults 
{ 
    [timer invalidate]; 
    NSLog(@"time: %i ", self.time); 

    ResultsViewController *resultsView = [[ResultsViewController alloc] initWithNibName:@"ResultsViewController" bundle:nil]; 

    // TRP - The following line is passing the "time" variable from MediaMasterViewController to ResultsViewController 
    resultsView.time = self.time; 

    [self.view addSubview:resultsView.view]; 
}