2013-04-24 177 views
3

我們假設有一個UISlider我設置了一定的值。如預期的那樣,滑塊手柄將移動到該值。限制滑動UISlider過去某個點

現在我想讓用戶來回滑動滑塊的手柄,但不要將UISlider的值設置得比我以編程方式分配的值小。

因此,例如我有一個UISlider最小值爲0,最大值爲100,我將它的值設爲50.我不希望用戶滑動「lefter」而不是50,而是在「正確「,我想讓用戶來回滑動手柄。

你如何在Obj-C中實現這種行爲?

回答

12

你應該首先確認更新事件連續發送:

mySlider.continuous = YES; 

你也可以做,在你的情節提要/筆尖(由@fDmitry作爲mentionned,這是IB默認狀態)。

然後,您必須將滑塊鏈接到.h文件中的IBAction(通過從IB拖動到代碼創建鏈接),並將其分配給滑塊的「Value Changed」事件。這將創建一個方法是這樣的:

-(IBAction)sliderValueChanged:(id)sender; 

實現這樣的說法:

- (IBAction)sliderValueChanged:(id)sender { 

    float maxValue = 50.0f; 

    if ([(UISlider*)sender value] > maxValue) { 
     [(UISlider*)sender setValue:maxValue]; 
    } 
} 
+0

我是否錯誤,或IB的UISliders默認連續? – dmee3 2013-04-24 12:46:12

+3

他們是。我加了它以防萬一。也許他在搜索解決方案時試圖點擊任何地方,並且意外地禁用了它:p – rdurand 2013-04-24 12:48:09

+0

@rdurand我沒有,但感謝通知,先生!公認! – 2013-04-24 13:10:32

2

這個人是很容易的,其實:)

創建行動並將其指定爲選擇器UISlider的行動的valueChanged。在該方法中,執行一個簡單檢查: 如果滑塊的值小於50,則將其設置爲50.

如果您需要任何進一步幫助,我可以在我的課程後面編寫一些示例代碼。希望能幫助到你!

+0

是的,這是一個了不起的想法!真的很容易實現,謝謝! – 2013-04-24 12:40:36

1

您的滑塊連接到valueChanged:行動。你應該實現它像這樣:

- (void)mySliderValueChanged:(UISlider *)slider 
{ 
    CGFloat myMinValue = 50.0f; // should be a global variable 

    if(slider.value < myMinValue) 
    { 
    slider.value = myMinValue; 
    } 
}