2014-11-22 7 views

답변

1

버튼의 여러 제어 상태를 추적 해 보시기 바랍니다. 당신은 UIControlEventTouchDown, UIControlEventTouchUpInside, UIControlEventTouchUpOutside같은 세 가지 UIControlEvent '초 동안 대상을 추가 할 수 있습니다. 터치 다운 이벤트는 터치가 시작될 때 수신되고 다른 두 이벤트는 터치가 종료되었다고 알려줍니다. 이러한 상태 사이에서 값을 세고 일부 텍스트를 변경할 수 있습니다.

[button addTarget:self action:@selector(touchStarted:) forControlEvents:UIControlEventTouchDown]; 

[button addTarget:self action:@selector(touchExited:) forControlEvents:UIControlEventTouchUpInside]; 

[button addTarget:self action:@selector(touchExited:) forControlEvents:UIControlEventTouchUpOutside]; 


- (void)touchStarted:(id)sender 
{ 
    self.touchInProgress = YES; 

/* start your counting operation and do it until the value of touchInProgress BOOL is YES */ 
} 

- (void)touchExited:(id)sender 
{ 
    self.touchInProgress = NO; 
} 
0

몇 가지 선택 사항이 있습니다.

옵션 1 : 마음에 와서 몇 touchesBegan /있는 touchesMoved/touchesEnded을 구현, true로보기를 userInteractionEnabled을 설정하여 UIView의 사용자 지정 하위 클래스를 만들고, 당신이 원하는 타이머를 시작하고 수행 논리를 개발

옵션 2 : 원하는 기능을 제공하는 UIGestureRecognizer의 사용자 지정 하위 클래스를 만듭니다. 제스처 인식기에는 재미있는 이벤트가 발생할 때 대상에게 알리는 메커니즘이 내장되어 있습니다. 메시지를 보내기 전에 지연 시간에 대한 매개 변수와 메시지 간격을 직접 설정할 수도 있습니다.

옵션 2는 가장 많은 연구를 수행하지만 가장 유연하고 재사용 가능한 솔루션을 제공합니다. GitHub에서 샘플 사용자 정의 UIGestureRecognizer 프로젝트를 발견했습니다. 내가 조금만 작업 한 것은 KTOneFingerRotationGestureRecognizer

여러분이 생각하는 것보다 실제로 더 쉽습니다. 그것이 제가 추천하는 길입니다. 그것은 좋은 학습 경험입니다.

관련 문제