UISlider thumbRect干扰了UIButton

时间:2017-07-09 12:17:28

标签: ios swift uibutton uislider

当我在它旁边放置一些UIButton时,我遇到了一些UISlider的奇怪行为。滑块的拇指以一种我不太懂的方式干扰按钮。

每当滑块的拇指靠近按钮时,似乎有一个不可见区域阻止按钮对触摸事件作出反应。当滑块的拇指停留在按钮下方时,按钮会识别触摸事件,但滑块拇指上方和下方似乎仍有一个薄区域会阻挡按钮并让您拖动滑块的拇指。我不明白这背后的逻辑。

UISlider干扰UIButton

enter image description here

我的UISlider子类看起来像这样:

import UIKit

class MySlider: UISlider {

    @IBInspectable var height: CGFloat = 5

    override func trackRect(forBounds bounds: CGRect) -> CGRect {

        return CGRect(origin: bounds.origin, size: CGSize(width: bounds.width, height: height))
    }

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {

        let tr = self.trackRect(forBounds: self.bounds)
        if tr.contains(point) {
            print("hit")
            return self
        }
        return nil
    }
}

UISlider hitTest

enter image description here

触摸tracRect时,hitTest会返回UIView,但触摸thumbImage上方和下方的薄区域时也会返回。

我搜索了很多关于这个问题并且使用类函数thumbRect,point和beginTracking,但它并没有改变那种行为。似乎没有很好地证明哪个区域受到UISlider的影响。

我非常感谢有关该主题的任何解释。

0 个答案:

没有答案