爲了「抓住」UI滑塊的手柄,必須觸摸它的頂部。我有興趣修改行爲,以便用戶只需觸摸uislider中的任何位置即可。觸摸時,手柄會跳轉到用戶觸摸的任何位置。我怎樣才能做到這一點?UISlider - 選擇何時觸摸拇指
0
A
回答
1
我通過重寫touchesBegan來完成它:withEvent:在UISlider的子類中。您不必檢查觸摸與滑塊的距離有多近,因爲如果滑塊位於滑塊上方,您只會觸摸一個事件。此代碼適用於使用默認的0到1比例設置的滑塊。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
float xPoint = [[[event allTouches]anyObject]locationInView:self].x;
[self setValue:xPoint/self.frame.size.width];
[super touchesBegan:touches withEvent:event];
}
0
關閉我的頭頂我會說你應該留意接觸視圖。當檢測到觸摸時,請檢查它與UISlider
機身的接近程度。如果它是在一定範圍內,做的(僞)
sliderValue = sliderMinValue + (sliderMaxValue-sliderMinValue)/(xCoordOfTouch - sliderLeftSideXCoord)/sliderLength
所以基本上你滑塊應根據用戶觸碰相對於滑塊的幀中計算值。
你提到這很有趣,因爲我在想今天做同樣的事情。如果我找到了一些東西,我會發布它(但不要屏住呼吸)。
0
如果您有最小值或最大值的圖像,rdelmar的回答不起作用。我修改了rdelmar的touchesBegan:withEvent:方法,只在軌道上看到觸及而不在邊緣。
希望這有助於
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
float xPoint = [[touches anyObject] locationInView:self].x;
float trackWidth = [self trackRectForBounds:self.bounds].size.width;
float margin = (self.bounds.size.width - trackWidth)/2;
float xOffset = xPoint - margin;
if (xOffset >= 0.0 && xOffset <= trackWidth) {
float newValue = xOffset/trackWidth;
[self setValue:newValue animated:YES];
[super touchesBegan:touches withEvent:event];
}
}
1
我知道這是一個老問題,但我只是想提一提,我想出了一個不同的方式最近做到這一點。簡而言之:
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
BOOL ignored = [super beginTrackingWithTouch:touch withEvent:event];
return YES;
}
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
BOOL ignored = [super continueTrackingWithTouch:touch withEvent:event];
return YES;
}
我認爲這是解決問題的一個更安全的方式,因爲你不必手動生成滑塊的值。你永遠不知道蘋果什麼時候可能會引入整數/制動滑塊等。
相關問題
- 1. UISlider拇指移動而不觸碰拇指
- 2. UISlider iOS的拇指重複
- 3. UISlider拇指圖像問題..!
- 4. UISlider,大拇指不動
- 5. UISlider自定義拇指
- 6. 如何獲得UISlider拇指位置
- 7. UISlider:觸摸忽略軌跡
- 8. SeekBar的拇指只有在觸摸時纔會出現
- 9. 對齊UISlider拇指圖像 - Objective-C的
- 10. UISlider設置拇指清晰的背景
- 11. 顯示翻轉邊框,並選擇拇指點擊並取消選擇預先選擇的拇指
- 12. UISlider拇指圖像在滑動時隱藏
- 13. Tizen選擇觸摸事件
- 14. 圖像觸摸選擇區
- 15. 使用自定義UISlider - 可可觸摸
- 16. UISlider在右端沒有收到觸摸
- 17. 不要傳遞一個UISlider觸摸
- 18. 如何改變UISlider拇指圖像的大小
- 19. 如何獲得UISlider的拇指圖像的中心
- 20. 如何更改UISlider的繪圖矩形和拇指圖像
- 21. 觸摸時更大觸摸
- 22. 如何在未點擊拇指的情況下觸發fancybox圖庫(用拇指)?
- 23. 當用戶觸摸已選擇的行時,如何隱藏UIPIckerView
- 24. 2手指觸摸
- 25. iOS UISlider拇指的移動來跟蹤電影的進度
- 26. 快速檢測uislider拇指拖動的方向3
- 27. UISlider setThumbTintColor與[UIColor colorWithPatternImage:]使拇指透明,突出顯示
- 28. UIslider的拇指圖像沒有從頭開始
- 29. UISlider自定義圖像和拇指高度?
- 30. Android 2手指觸摸觸發1個手指觸摸以及2個手指觸摸
夠簡單。謝謝! – morgancodes 2012-08-15 16:27:53