Я делаю палитру цветов. У меня есть следующий код:
Просмотр controller.h:
@interface ColorPickerViewController : UIViewController <HueSliderDelegate> {
HueSlider *hueSlider;
float hue;
}
@property (nonatomic, assign) float hue;
@end
Просмотр controller.m:
-(void)setHue:(float)hueLocal {
hue = hueLocal;
hueSlider.hue = self.hue;
}
-(void)hueChanged {
self.hue = hueSlider.hue;
}
HueSlider.h:
@protocol HueSliderDelegate <NSObject>
-(void)hueChanged;
@end
@interface HueSlider : UISlider {
HueSlider *hueSlider;
float hue;
}
@property (nonatomic, assign) float hue;
@end
HueSlider.m:
//the hue float can be set when the user moves the slider
-(void)setHue:(float)hueLocal {
hue = hueLocal;
slider.value = self.hue;
[self.delegate hueChanged];
}
Проблема в том, что пользователь изменяет значение, ползунок отправляет изменение в контроллер представления. Контроллер представления затем меняет свое значение на оттенок, что возвращает изменение обратно к ползунку. Отправлять его обратно на ползунок не нужно, и если пользователь перемещает ползунок вперед, он вернется на прежнее место. Любой совет, как я могу кодировать это по-другому, чтобы не допустить этого?
Примечание. На самом деле это не слайдер, но я поставил проблему в этом контексте, поскольку он менее сложен, чем описание созданного мной пользовательского элемента управления, аналогичного слайдеру.