Кликабельный UISlider

Я хотел бы сделать мой UISlider интерактивным - чтобы изменить значение при щелчке на «пустое место», например Он установлен на ноль, я нажимаю на середину ползунка, и он "перескакивает" на середину. Есть ли способ как это сделать?


person Michal    schedule 20.04.2012    source источник


Ответы (2)


Я хочу предложить что-то похожее на jrtc27, но без подкласса: добавьте _ 1_ к ползунку.

UISlider *slider = [[[UISlider alloc] init] autorelease];
//configure slider
UITapGestureRecognizer *tapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)] autorelease];
[slider addGestureRecognizer:tapGestureRecognizer];


- (void)sliderTapped:(UIGestureRecognizer *)gestureRecognizer {
    UISlider *slider = (UISlider *) gestureRecognizer.view;
    //setValue 
}
person vikingosegundo    schedule 20.04.2012
comment
И как я получу значение от места, на которое я нажал? - person Michal; 20.04.2012
comment
позвольте угадаю: вы же не любите искать документацию, верно? Но подсказка: _ 1_ должно помочь вам. и есть масса примеров кодов для распознавателя жестов на SO и в Интернете. - person vikingosegundo; 20.04.2012
comment
Нет, я новичок в какао, я вырос на языках, связанных с Java, поэтому я привык к таким методам, как get-, set-, is-, on- и т. Д., Которые не так часто используются в Objective-C. Сейчас это locationInView, что действительно кажется логичным, но я бы искал что-то вроде ... getLocationInView. Я привыкну, щас учусь :) - person Michal; 20.04.2012
comment
+1: Ответ лучше, чем мой, хотя мой поддерживает iOS 3 (и 2 ...) :) - person jrtc27; 22.04.2012
comment
На самом деле это не работает для меня, поскольку, похоже, он обнаруживает только щелчки на большом пальце, а не на какой-либо части ползунка. - person marcgg; 07.10.2012

Подклассифицируйте его, а затем измените метод -touchesBegan. Если касание находится достаточно далеко, вызовите -setValue :, иначе вызовите супер-реализацию (если вы хотите, чтобы она всегда прыгала, вы всегда можете просто вызвать -setValue :).

person jrtc27    schedule 20.04.2012
comment
Вау, кажется сложным для одной функции. Из-за нехватки времени, думаю, мне придется отказаться от этого ... Тем не менее, спасибо. - person Michal; 20.04.2012