UISegmentedControl делегат / сенсорные события - PullRequest
15 голосов
/ 13 января 2010

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

Ответы [ 2 ]

36 голосов
/ 24 августа 2011

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

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

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

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

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

0 голосов
/ 13 января 2010

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

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

...