Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UISlider thumbRect干扰UIButton_Ios_Swift_Uibutton_Uislider - Fatal编程技术网

Ios UISlider thumbRect干扰UIButton

Ios UISlider thumbRect干扰UIButton,ios,swift,uibutton,uislider,Ios,Swift,Uibutton,Uislider,当我在UISlider旁边放置一些UIButton时,我遇到了它的一些奇怪行为。滑块的拇指在某种程度上干扰了按钮,我真的不明白 当滑块的拇指靠近按钮时,似乎有一个不可见区域阻止按钮对触摸事件做出反应。当滑块的拇指停留在按钮下方时,按钮可识别触摸事件,但滑块拇指上方和下方似乎仍有一个薄区域,该区域将阻止按钮并允许您拖动滑块的拇指。我不明白这背后的逻辑 UISlider干扰UIButton 我的UISlider子类如下所示: import UIKit class MySlider: UISlid

当我在UISlider旁边放置一些UIButton时,我遇到了它的一些奇怪行为。滑块的拇指在某种程度上干扰了按钮,我真的不明白

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

UISlider干扰UIButton

我的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

触摸tracRect时,以及触摸thumbImage上方和下方的薄区域时,hitTest返回UIView

我搜索了很多关于这个问题的内容,并使用了thumbRect、point和BeginKing类函数,但它并没有改变这种行为。似乎没有很好的文件证明哪个区域确实受到UISlider的影响


如果您能对该主题进行任何解释,我将不胜感激。

我认为您在这里有两种选择:(1)保持紧凑的布局,并将滑块子视图放在前面;(2)更改布局,可能的话,可以将按钮变小,您可以检查主视图的边界以决定何时进行。我同意,您应该始终在UI滑块和其他应响应触摸事件的UI元素之间留出一些空间。但我想知道这到底应该有多少空间。甚至图像底部的第三个UIButton也会受到滑块拇指的影响。还有一些空间,但显然不够。这就是自动布局的用武之地。(1) 使用前导/尾随/顶部/底部定位,可以定义视图之间的确切剩余空间量。(2) 然后使用高度/宽度、辅助线和容器视图(以及优先级)定义剩余部分。是的,这是常见的做法。但是你知道一个UISlider的thumb元素实际上会影响多少空间吗?有记录吗?如果有可以依赖的值,有没有允许更改这些值的方法?除此之外,我还想了解上面屏幕截图中显示的行为背后的逻辑。我知道“标准”UISlider的高度是无法更改的,30分是我想到的数字。我花了将近一个月的时间安装了4个带标签的滑块——纵向为2x2,横向为4x1——还有一个UISegmentedControl和一个GLKView。现在,如果您愿意,您可以设置一个自定义拇指图像(仅在代码中),如果您愿意的话,该图像的高度应该更小。以iTunes中的音量滑块为例。奇怪的是,当我这样做的时候,在IB中(我将其设置为IBDesignable),我只看到了拇指图像的上半部分!最后一条评论…我想你有两个选择:(1)保持紧凑的布局,将滑块子视图放在前面;(2)改变布局,可能是通过缩小按钮-你可以检查主视图的边界来决定何时。我同意,您应该始终在UI滑块和其他应响应触摸事件的UI元素之间留出一些空间。但我想知道这到底应该有多少空间。甚至图像底部的第三个UIButton也会受到滑块拇指的影响。还有一些空间,但显然不够。这就是自动布局的用武之地。(1) 使用前导/尾随/顶部/底部定位,可以定义视图之间的确切剩余空间量。(2) 然后使用高度/宽度、辅助线和容器视图(以及优先级)定义剩余部分。是的,这是常见的做法。但是你知道一个UISlider的thumb元素实际上会影响多少空间吗?有记录吗?如果有可以依赖的值,有没有允许更改这些值的方法?除此之外,我还想了解上面屏幕截图中显示的行为背后的逻辑。我知道“标准”UISlider的高度是无法更改的,30分是我想到的数字。我花了将近一个月的时间安装了4个带标签的滑块——纵向为2x2,横向为4x1——还有一个UISegmentedControl和一个GLKView。现在,如果您愿意,您可以设置一个自定义拇指图像(仅在代码中),如果您愿意的话,该图像的高度应该更小。以iTunes中的音量滑块为例。奇怪的是,当我这样做的时候,在IB中(我将其设置为IBDesignable),我只看到了拇指图像的上半部分!最后一点评论是。。。。