UISlider с възможност за кликване

Бих искал да направя моя UISlider да може да се кликва - да променя стойността при щракване на "празно място", напр. Настроен е на нула, щраквам в средата на плъзгача и той ще "скочи" до средата. Има ли някакъв начин как да направите това?


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


Отговори (2)


Искам да предложа нещо подобно на jrtc27, но без подкласове: добавете UI(Tap)GestureRecognizer към плъзгача.

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
позволете ми да позная: не обичате да търсите документация, нали? Но намек: locationInView: трябва да ви помогне. и има много примерни кодове за разпознаване на жестове в 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