gpt4 book ai didi

ios - 在 UIControl 中覆盖 isEnabled 以仍然允许触摸

转载 作者:行者123 更新时间:2023-11-28 08:15:36 25 4
gpt4 key购买 nike

我有一个继承自 UIControl 的自定义 slider 。

对于我的控制,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...
}
}

}

附言如果您想知道我为什么要这个,那是因为禁用的控件在被触摸时仍然应该能够识别自己:它会短暂亮起但很快就会消失,表明需要启用它才能进行进一步的交互。

如果我想阻止所有用户交互,我将使用 isUserInteractionEnabled

最佳答案

我能想到的唯一方法是使用 0.5 alpha 将 slider 设置为灰色(您可以调整 alpha 使其看起来像已禁用)。

此外,创建一个 BOOL 属性来标识其状态(事件/非事件)

因此,当用户触摸 slider 时,它仍然会响应 valueChanged:(无论您给它什么选择器)

关于ios - 在 UIControl 中覆盖 isEnabled 以仍然允许触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com