diff --git a/DeltaCore/UI/Controller/ButtonsInputView.swift b/DeltaCore/UI/Controller/ButtonsInputView.swift index 511e01c..972658e 100644 --- a/DeltaCore/UI/Controller/ButtonsInputView.swift +++ b/DeltaCore/UI/Controller/ButtonsInputView.swift @@ -29,8 +29,9 @@ class ButtonsInputView: UIView private let imageView = UIImageView(frame: .zero) - private let feedbackGenerator = UIImpactFeedbackGenerator(style: .medium) - + private var downFeedbackGenerator: UIImpactFeedbackGenerator? + private var upFeedbackGenerator: UIImpactFeedbackGenerator? + private var touchInputsMappingDictionary: [UITouch: Set] = [:] private var previousTouchInputs = Set() private var touchInputs: Set { @@ -47,8 +48,17 @@ class ButtonsInputView: UIView self.isMultipleTouchEnabled = true - self.feedbackGenerator.prepare() + if #available(iOS 13.0, *) { + self.downFeedbackGenerator = UIImpactFeedbackGenerator(style: .rigid) + self.upFeedbackGenerator = UIImpactFeedbackGenerator(style: .soft) + } else { + self.downFeedbackGenerator = UIImpactFeedbackGenerator(style: .medium) + self.upFeedbackGenerator = UIImpactFeedbackGenerator(style: .light) + } + self.downFeedbackGenerator?.prepare() + self.upFeedbackGenerator?.prepare() + self.imageView.translatesAutoresizingMaskIntoConstraints = false self.addSubview(self.imageView) @@ -140,7 +150,7 @@ private extension ButtonsInputView { switch UIDevice.current.feedbackSupportLevel { - case .feedbackGenerator: self.feedbackGenerator.impactOccurred() + case .feedbackGenerator: self.downFeedbackGenerator?.impactOccurred() case .basic, .unsupported: UIDevice.current.vibrate() } } @@ -149,6 +159,15 @@ private extension ButtonsInputView if !deactivatedInputs.isEmpty { self.deactivateInputsHandler?(deactivatedInputs) + + if self.isHapticFeedbackEnabled + { + switch UIDevice.current.feedbackSupportLevel + { + case .feedbackGenerator: self.upFeedbackGenerator?.impactOccurred() + case .basic, .unsupported: break + } + } } } }