2010-03-18 35 views
1

是否可以設置一個UISlider作爲第一個響應者和其當前值設置爲當前觸摸編程的位置?iPhone:激活UISlider並將其值設置爲當前觸摸的位置編程

我的應用程序設置我有一個UIView容器佔據整個屏幕的方式。在容器內部,我有另一個UIView在屏幕下方(我將稱之爲bottomBar)。在bottomBar中有一個UISlider元素。

的想法是,當用戶在屏幕的底部邊緣刷卡,與滑塊的bottomBar移動到視圖中。我試圖實現的是激活UISlider,並將滑塊的位置(值)設置爲用戶觸摸的位置。這可能嗎?

我也沒搞清楚,一個很醜的黑客來完成這件事。但是,必須有比這更優雅的解決方案嗎?

我與上述代碼
CGPoint sliderPos = [touch locationInView:pageSlider]; 
float newSliderValue = sliderPos.x/pageSlider.frame.size.width*pageSlider.maximumValue; 
if (sliderPos.x<=0) { 
    pageSlider.value = 0; 
} 
else if(newSliderValue>=pageSlider.maximumValue) { 
    pageSlider.value = pageSlider.maximumValue; 
} 
else { 
    pageSlider.value = newSliderValue; 
} 

兩個具體的問題是,它a)不定位拇指完全正確的,因爲它忽略拇指的長度,和b)的拇指沒有突出顯示,因爲它移動。

回答

0

您可以使用該方法- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value讓拇指的大小,考慮到這一點。

我不知道你將如何去彰顯拇指,雖然。我想你已經嘗試了所有正常的事情,比如將highlighted和/或selected設置爲true,或者在滑塊上調用becomeFirstResponder

您可能會通過beginTrackingWithTouch:withEvent:方法和其他相關方法將滑塊傳遞給它,以使其認爲它已被觸摸。

+0

這就像一個魅力!謝謝。 – carloe 2010-03-18 02:15:52

+1

我只是好奇......哪個部分像魅力一樣工作?你用什麼方法? – 2010-03-18 13:34:14

相關問題