2016-02-27 140 views
2

是他們忽視軌跡觸摸並僅顯示滑塊的方式。由於使用了UISlider的特殊功能,並且根據用戶是否觸摸它的軌跡,軌道被隱藏了。問題在於滑塊在另一個3D視圖上,即使隱藏只有拇指滑塊顯示,隱藏滑塊捕獲事件。而不是它下面的uiview。他們是忽略滑塊觸摸的一種方式。UISlider:觸摸忽略軌跡

我現在能想到的唯一工作就是聽用戶何時觸摸滑塊,以及何時用戶釋放將ThumbImage的圖像置於滑塊的實際Thumb位置的確切位置;然而,我希望他們是一個更簡單的方法。

I.E.更容易想到它是一個滑過Apple MapView的滑塊,該滑塊會干擾用戶觸摸

+0

你可以用'threeDView.userInteractionEnabled = FALSE'當滑塊處於活動狀態。 –

回答

3

UISlider沒有一個完全可行的方法。

您可以通過繼承UISlider和壓倒一切的pointInside(_:withEvent:)只返回true如果點是在大拇指方面做它,你可以使用thumbRectForBounds(_:trackRect:value:)拇指區域,但該方法的文件說,「你不應該把這種。方法是直接」

不過,這似乎工作:

class MySlider: UISlider { 

    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { 
     let thumbRect = thumbRectForBounds(bounds, trackRect: trackRectForBounds(bounds), value: value) 
     return thumbRect.contains(point) 
    } 

} 
+0

哇這個偉大的工程,謝謝! – kdgwill