2011-08-22 2 views
1

첫 번째 해제 this question은 긴 언론에 대해 UIButton을 하위 클래스 화하는 방법을 이해하는 데 도움이되었습니다. UISegmentedControl에 대해 동일한 작업을 수행하고 싶습니다. 그러나 UISegmentedControl이 세그먼트 (UISegmentedControl.h는 비공개로 표시)에 대한 직접 액세스를 허용하기 때문에 어떤 세그먼트가 보류되었는지 식별 할 수있는 방법을 알지 못합니다. UISegmentedControl처럼 보이도록 몇개의 UIButton을 커스터마이즈 할 수 있습니다 만, 순간적인 스위치 로직을 구현할 필요가 있습니다. 큰 문제는 아니지만 UISegmentedControl을 서브 클래 싱하는 것은 나에게 깨끗해 보인다.어떻게 개별 세그먼트가 UILongPressGestureRecognizer를 인식하도록 UISegmentedControl을 서브 클래스 화합니까?

나는 라디오의 프리셋 컨트롤을 모방하기 위해이 컨트롤을 사용하고 있습니다. 저장된 스테이션으로 이동하려면 누르고, 해당 세그먼트에 현재 스테이션을 지정합니다.

답변

2

서브 클래 싱없이 시도했는데 제대로 작동하는 것 같습니다.

UILongPressGestureRecognizer* recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(pressGesture:)]; 
recognizer.delegate = self; 
[mySegCtrl addGestureRecognizer:recognizer]; 
[recognizer release]; 

... 

-(void)pressGesture:(UILongPressGestureRecognizer*)gesture 
{ 
    NSLog(@"pressGesture %@", gesture); 
} 

길게 누르면 먼저 세그먼트를 선택하고 제스처가 실행됩니다. 콜백 코드를 확인하지 않으면 내 코드를 확인하지 않습니다. 왜냐하면 나는 recognizer.delegate = self를 설정하지 않았기 때문에 잠시 멈추었습니다.