Haptica is a simple and expressive haptic feedback generator for iOS.
$ pod try Haptica| Haptica Version | iOS | Swift | Xcode |
|---|---|---|---|
| 4.x | 13+ | 5.x | 11+ |
| 3.x | 9+ | 5.x | 8+ |
| 2.x | 9+ | 4.x | 8+ |
| 1.x | 9+ | 3.x | 8+ |
- Device with a supported Taptic Engine
- App running in the foreground
- System Haptics setting enabled
Trigger a haptic feedback with a single line:
Haptic.impact(.light).generate()- Impact (
.light,.medium,.heavy,.soft,.rigid)
Use to indicate collision or snap-to-position. - Notification (
.success,.warning,.error)
Use to communicate task results. - Selection
Use for navigation through discrete values.
Use new expressive variants for common interactions:
Haptic.success.generate()
Haptic.warning.generate()
Haptic.start.generate()
Haptic.stop.generate()
Haptic.increase.generate()
Haptic.decrease.generate()These semantic styles internally map to appropriate UIKit or Core Haptics-based effects.
Haptic.play("..oO-Oo..", delay: 0.1)| Symbol | Feedback Type |
|---|---|
. |
Light impact |
o |
Medium impact |
O |
Heavy impact |
x |
Soft impact |
X |
Rigid impact |
- |
0.1s pause |
Or use structured notes:
Haptic.play([
.haptic(.impact(.light)),
.haptic(.impact(.heavy)),
.wait(0.1),
.haptic(.impact(.heavy)),
.haptic(.impact(.light))
])Haptica uses Core Haptics by default when available. To use the legacy API:
Haptic.play(notes, legacy: true)Play a Core Haptics pattern from a bundled .ahap file:
Haptic.playPattern(named: "Feedback")Make sure the file is included in your app bundle and contains a valid haptic pattern.
Enable haptics for buttons easily:
button.isHaptic = true
button.hapticType = .impact(.light)Add or remove haptic feedback on control events:
button.addHaptic(.selection, forControlEvents: .touchDown)
button.removeHaptic(forControlEvents: .touchDown)API Summary:
var isHaptic: Bool
var hapticType: Haptic?
var hapticControlEvents: UIControl.Event?
func addHaptic(_ haptic: Haptic, forControlEvents events: UIControl.Event)
func removeHaptic(forControlEvents events: UIControl.Event)Integrate sound feedback with Peep:
Peep.play(sound: KeyPress.tap)// For iOS 13+
.package(url: "https://github.com/efremidze/Haptica.git", from: "4.0.0")
// For iOS 9
.package(url: "https://github.com/efremidze/Haptica.git", from: "3.0.0")use_frameworks!
pod "Haptica"github "efremidze/Haptica"- Found a bug? β Open an issue
- Have a feature request? β Open an issue
- Want to contribute? β Submit a pull request
Haptica is available under the MIT license. See the LICENSE file for details.