Документация о Haptic обратной связи действительно носит описательный характер.Но если вам нужно какое-то быстрое решение, вот оно.
var hapticGenerator: UISelectionFeedbackGenerator?
func wasDragged() {
hapticGenerator = UISelectionFeedbackGenerator()
haptiGenerator.selectionChanged()
hapticGeneraor = nil
}
В качестве альтернативы, в зависимости от логики экрана, вы можете инициализировать генератор вне функции wasDragged
, а внутри нее просто вызвать hapticGenerator.prepare()
и selectionChanged()
.В этом случае вам не следует присваивать ему nil
после завершения перетаскивания, потому что оно больше не сработает.Согласно документации, вы должны освободить генератор, когда он больше не нужен, так как Taptic Engine будет ожидать и, следовательно, потреблять системные ресурсы для другого вызова.
Обратите внимание, что вызов этих методов напрямую не влияет на тактику.Вместо этого он информирует систему о событии.Затем система определяет, следует ли воспроизводить тактильные сигналы, на основе устройства, состояния приложения, оставшегося заряда батареи и других факторов.
Например, в настоящий момент воспроизводится только тактильная обратная связь:
- На устройстве с поддерживаемым Taptic Engine
- Когда приложение работает на переднем плане
- Когда включена настройка System Haptics
Документация:
https://developer.apple.com/documentation/uikit/uifeedbackgenerator