Делегат UISegmentedControl/Touch Events

У меня есть UISegmentedControl, который имеет шесть сегментов, я хочу, чтобы они вызывали метод при изменении значения, но также, когда каждый сегмент получает UIControlEventTouchDragIn, потому что я хочу, чтобы UILabel отображался с его именем, когда человек пытается выбрать что-то на нем и перетащить палец по элементу управления, но сегментированный элемент управления не вызывает этот вызов, даже когда я перетаскиваю его. Пожалуйста помоги. Возможно, мне нужно создать UIButtons над элементом управления, который вызывает методы при перетаскивании, но вызовите метод с измененным значением, когда они получают кран.

Ответы

Ответ 1

Вы можете просто подклассифицировать UISegmentedControl и переопределить метод - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { return; } для управления перетаскиванием и расположением касаний.

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

Ответ 2

Возможно, я не понимаю ваш вопрос правильно, но вы не могли бы просто использовать это:

[segmentedControl addTarget:self 
         action:@selector(action:)  
         forControlEvents:UIControlEventValueChanged];

и просто замените UIControlEventValueChanged на UIControlEventTouchDragIn? Затем в вашем методе действий сделайте все, что нужно сделать, например, измените текст UILabel.

У меня есть UITAbleView с кучей ячеек и UISegmentedControll в каждой ячейке, и он отлично подходит для меня.

Документация для UISegmentedControl, по-видимому, недоступна в Интернете, но вы можете увидеть ее в XCode Organizer, и приведенный выше код является первым примером.