2017-03-05 5 views
1

UIControl에서 상속받은 사용자 정의 슬라이더가 있습니다. 내 제어를 위해UIControl에서 isEnabled를 재정 의하여 계속 허용합니다.

isEnabled 상태는 여전히 접촉을 허용해야합니다,하지만 난 isEnabled를 오버라이드 (override) 할 경우에 UIControl도 false로 isUserInteractionEnabled를 설정하는 것 같다.

내가 무엇을해도 나는 이것을 막을 수 없습니다. 아이디어가 있습니까? 아니면 내 주 (예 : 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. 왜 내가 원하는지 궁금한 점이 있다면 장애가있는 컨트롤이 손을 대면 식별 할 수 있어야하기 때문입니다. 즉, 잠깐 불이 켜지지만 곧 다시 떨어져서 상호 작용을 허용해야한다는 것을 나타냅니다.

모든 사용자 상호 작용을 차단하려는 경우 isUserInteractionEnabled을 사용합니다.

+0

valueChanged: 당신을 할 수 응답 (활성/비활성) 상태를 식별 할 수 BOOL 속성을 만들 "신원 확인"을 의미하는 것에 조금 확장 하시겠습니까? 그것이 무엇인지에 따라, 할 수있는 또 다른 내장 된 방법이있을 수 있습니다. –

+0

감사합니다. 더 많은 정보를 추가했습니다. – MH175

+0

그 반대입니까? 비활성화 된 컨트롤이 비활성화되었다고 주장 할 수 있지만 활성화 된 컨트롤은 사용자 상호 작용이 해제 된 경우에도 자신을 식별 할 수 있어야합니다. * isEnabled * 대신에 * isUserInteractionEnabled *를 재정의하려고 시도 했습니까? – dfd

답변

0

내가 생각할 수있는 유일한 접근 방식은 회색으로 슬라이더를 회색으로 설정하고 0.5 alpha으로 알파를 조정하여 사용할 수 없도록 설정합니다. 또한

는 사용자가 슬라이더에 닿을 때

그래서 아직도 (당신이 그것을 줄 어떤 선택)

관련 문제