2017-03-05 2 views
1

私はUIControlから継承したカスタムスライダーを持ってできるようにするuicontrol内でIsEnabledのオーバーライド。はまだタッチ

私のコントロールでは、isEnabledの状態にはまだ触れることができますが、isEnabledを上書きするとUIControlも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

ありがとうございます。詳細を追加しました。 – MH175

+0

あなたは反対を試みましたか?無効化されたコントロールは無効になっていると主張できますが、有効なコントロールはユーザーの操作が無効になっても自分自身を識別できる必要があります。 * isEnabled *の代わりに* isUserInteractionEnabled *をオーバーライドしようとしましたか? – dfd

答えて

0

私は考えることができる唯一の方法は、(あなたはそれが無効のように見えるようにアルファを調整することができます)0.5 alphaとグレーにスライダを設定することです。

また、ユーザーがスライダーに触れたときに、それはまだ(あなたがそれに与えるものは何でもセレクタ)valueChanged:に応答します(アクティブ/非アクティブ)の状態を識別するために

BOOLプロパティを作成

関連する問題