override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    super.touchesEnded(touches, with: event)
    
    guard let touch = touches.first else { return }
    let touchLocation = touch.location(in: self)
    
    let touchPoint = fetchTouchPoint(touchLocation)
    let touchValue = fetchTouchValue(touchPoint)
    value = touchValue
    rx.value.onNext(value)
}