Как мне создать подкласс UISegmentedControl, чтобы отдельные сегменты распознавали UILongPressGestureRecognizer? - PullRequest
1 голос
/ 22 августа 2011

Прежде всего этот вопрос помог мне понять, как подкласс UIButton для длинных нажатий.Я хотел бы сделать то же самое для UISegmentedControl, однако я не вижу, как я мог бы определить, какой сегмент был удержан, поскольку UISegmentedControl разрешает прямой доступ к его сегментам (UISegmentedControl.h показывает их как частные).Я мог бы просто настроить несколько кнопок UIB, чтобы они выглядели как UISegmentedControl, однако мне также пришлось бы реализовать логику мгновенного переключения.Что не будет большим делом, но подкласс UISegmentedControl кажется мне чище.

Кстати, я использую этот элемент управления для имитации предустановленных элементов управления радио: нажмите, чтобы перейти к сохраненной станции, и удерживайте, чтобы назначить текущийстанция в этом сегменте.

1 Ответ

2 голосов
/ 04 декабря 2011

Я пробовал это без подклассов, и, похоже, это работает.

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

...

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

Длительное нажатие сначала выбирает сегмент, а затем запускает жест.Если вы не получаете обратный вызов, проверьте мой код - я застрял на некоторое время, потому что я не устанавливал распознаватель.delegate = self.

...