2010-03-25 7 views
1

나는 그물과 문서를 수색했지만, 내가하려는 것을 찾지 못했습니다. UIButton이 x 초 동안 유지되는 경우 하나의보기를로드하려는 응용 프로그램에서 작업하고 있습니다. x + y 초 등으로 유지되는 경우 또 다른보기를 사용합니다. this tutorial을 발견했습니다. 내가 겪고있는 문제는 버튼을 누르는 길이를 어떻게 바꿀 것인가? 이 자습서는 탭 수를 전환했습니다.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; 
    } 

} 

의견이 있으십니까?

감사합니다. 토마스

답변

1

나는 내 대답을 얻었습니다. 방금 터치 다운 이벤트에서 NSTimer를 시작했고 내부에서 위로 터치로 멈췄습니다.

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