             invisibleStackview?.focusedIndex = Int(value)*2
         }
     }
+
+    // MARK: UIFocusEnvironment
     func isRateSliderContext(_ context: UIFocusUpdateContext) -> Bool {
         guard let v = context.nextFocusedView else {
             return false
         }
         return v.isDescendant(of: self) && v is InvisibleFocusView
     }
-    override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
+    override public func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
+        guard focusStyle == .default else {
+            return
+        }
         coordinator.addCoordinatedAnimations({
             [weak self] in
             if let b = self?.isRateSliderContext(context), b {

    private var config: Config?

    // MARK: Lifecycle
    override func didMoveToSuperview() {
        super.didMoveToSuperview()
    }

    override func didMoveToWindow() {
        super.didMoveToWindow()
        layer.cornerRadius = cornerRadius
        update()

import GameController
import UIKit

public enum FocusStyle {
    case `default`, custom
}
public class RateSlider: UIView {

    public static var isDebug: Bool = false

    // MARK: Properties
    public var value: Float = 0.0 {
