You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/Signal/src/UserInterface/HapticFeedback.swift

52 lines
1.0 KiB
Swift

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import Foundation
protocol HapticAdapter {
func selectionChanged()
}
class LegacyHapticAdapter: NSObject, HapticAdapter {
// MARK: HapticAdapter
func selectionChanged() {
// do nothing
}
}
@available(iOS 10, *)
class FeedbackGeneratorHapticAdapter: NSObject, HapticAdapter {
let selectionFeedbackGenerator: UISelectionFeedbackGenerator
override init() {
selectionFeedbackGenerator = UISelectionFeedbackGenerator()
selectionFeedbackGenerator.prepare()
}
// MARK: HapticAdapter
func selectionChanged() {
selectionFeedbackGenerator.selectionChanged()
selectionFeedbackGenerator.prepare()
}
}
class HapticFeedback: HapticAdapter {
let adapter: HapticAdapter
init() {
if #available(iOS 10, *) {
adapter = FeedbackGeneratorHapticAdapter()
} else {
adapter = LegacyHapticAdapter()
}
}
func selectionChanged() {
adapter.selectionChanged()
}
}