0

3 초 동안 버튼을 눌러 색상을 변경하려고합니다. 타이머가 3 초에 도달하면 색상 변경은 영구적이지만 시간이 다가 오기 전에 버튼을 놓으면 버튼이 원래 색상으로 돌아갑니다. 나는이 날 화재로 애니메이션을 위해 아래로 3 초 동안 버튼을 길게 할 필요U 버튼을 누른 상태에서 색을 변경하는 방법과 x 초 전에 풀면 색 변경을 취소하는 방법은 무엇입니까?

- (void)someMethod { 
     [UIView transitionWithView:self.button 
        duration:2.0 
        options:UIViewAnimationOptionCurveEaseIn 
       animations:^{ 
        self.button.backgroundColor = [UIColor redColor]; 
       } 
       completion:^(BOOL finished) { 
        NSLog(@"animation finished"); 
       }]; 
} 

fireSomeMethod

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(fireSomeMethod)]; 
longPress.minimumPressDuration = 3.0; 
[self.view addGestureRecognizer:longPress]; 

viewDidLoad과 애니메이션 자체가이 소요 : 내가 지금까지 가지고하는 것은 이것이다 완료하려면 초. 원하는 동작은 longPress가 시작되면 애니메이션이 시작되고 3 초 전에 버튼을 놓으면 모든 것이 원래대로 되돌아갑니다.

가 버튼 이벤트의

답변

2

만들기 사용이 필요 UILongPressGestureRecognizer

이 버튼이 동작을 확인합니다 사용하지 않으려면 사전에 도움을 주셔서 감사합니다, 하나는 Touch Down 용이고 다른 하나는이

// For `Touch Up Inside` 
- (IBAction)btnReleased:(id)sender { 
    [timer invalidate]; 
    NSLog(@"time - %d",timeStarted); 
} 
// For `Touch Down` 
- (IBAction)btnTouchedDown:(id)sender { 
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0f 
            target:self 
            selector:@selector(_timerFired:) 
            userInfo:nil 
            repeats:YES]; 
    timeStarted = 0; 
} 

- (void)_timerFired:(NSTimer *)timer {\ 
    timeStarted++; 
} 
같은 Touch Up Inside

입니다

NSTimer 유형의 timerint 유형의 timeStarted을 생성하십시오. Touch Down에 타이머를 발생시키고 Touch Up Inside에 무효화하고 Touch Up Inside 조치 방법은 버튼을 누르고있을 때까지 총 시간을 얻습니다. 위의 코드에 표시된대로

관련 문제