Haptica

Easy Haptic Feedback Generator ๐Ÿ“ณ

784
45
Swift

Haptica

Build Status
Carthage Compatible
Language
Version
License
Platform

Haptica

Haptica is a simple and expressive haptic feedback generator for iOS.

$ pod try Haptica

๐Ÿ“ฑ Requirements

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+

Haptic Feedback Requirements

  • Device with a supported Taptic Engine
  • App running in the foreground
  • System Haptics setting enabled

๐Ÿš€ Usage

Trigger a haptic feedback with a single line:

Haptic.impact(.light).generate()

Feedback Types

  • 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.

Semantic Types (New)

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.

Custom Vibration Patterns

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))
])

๐Ÿ”ง Core Haptics Support

Haptica uses Core Haptics by default when available. To use the legacy API:

Haptic.play(notes, legacy: true)

๐Ÿ“‚ Play from Pattern File (New) - iOS 16+

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.


๐Ÿงน UIButton Extension

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)

๐Ÿ”Š Sound Effects

Integrate sound feedback with Peep:

Peep.play(sound: KeyPress.tap)

๐Ÿ“ฆ Installation

Swift Package Manager

// 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")

CocoaPods

use_frameworks!
pod "Haptica"

Carthage

github "efremidze/Haptica"

๐Ÿ’ฌ Communication

  • Found a bug? โ†’ Open an issue
  • Have a feature request? โ†’ Open an issue
  • Want to contribute? โ†’ Submit a pull request

๐Ÿ“ฐ Mentions


๐Ÿ“„ License

Haptica is available under the MIT license. See the LICENSE file for details.