我有一个继承自UIControl
的自定义滑块。
对于我的控件,isEnabled
状态仍应允许触摸,但当我覆盖isEnabled
时,似乎UIControl
也将isUserInteractionEnabled
设置为false。
无论我做什么,我似乎无法阻止这一点。任何想法,还是我坚持为我的州创建另一个名称(即isBypassed
)?
class CustomSlider: UIControl {
private var _isEnabled: Bool = false
override public var isEnabled: Bool {
get { return _isEnabled }
set { setIsEnabled(newValue, animated: false }
}
public func setIsEnabled(_ isEnabled: Bool, animated: Bool) {
self._isEnabled = isEnabled
if animated {
//do the animation...
}
}
}
P.S。如果你想知道为什么我想要这个,那是因为一个被禁用的控件仍然能够在触摸时识别它自己:它会短暂亮起然后快速消失,表明它需要被启用才能进一步交互。
如果我想阻止所有用户互动,我会使用isUserInteractionEnabled
。
答案 0 :(得分:0)
我能想到的唯一方法是使用0.5 alpha
将滑块设置为灰色(您可以调整alpha以使其看起来像禁用)。
此外,创建一个BOOL
属性以标识其状态(活动/非活动)
因此,当用户触摸滑块时,它仍会响应valueChanged:
(无论您选择哪个选择器)