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