1
我有一個自定義滑塊,從UIControl
繼承。覆蓋isEnabled在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
。
你能通過「標識自己」來擴大你的意思嗎?可能有另一種內置的方式來實現,取決於它是什麼。 –
謝謝。增加了更多信息。 – MH175
你有沒有嘗試過相反的?有人可能會爭辯說禁用了禁用控件,但即使用戶交互關閉,啓用的控件也應該能夠識別自身。你有沒有嘗試覆蓋* isUserInteractionEnabled *而不是* isEnabled *? – dfd