A reactive gesture handling library for iOS and macOS using RxSwift, turning any view into a gesture observable.
RxGesture is a reactive gesture handling library for iOS and macOS that provides RxSwift wrappers around native gesture recognizers. It allows developers to turn any view into an observable gesture source, enabling declarative and composable handling of taps, swipes, pans, and other gestures using RxSwift streams.
iOS and macOS developers using RxSwift who need a reactive, declarative way to handle gesture interactions in their applications.
Developers choose RxGesture because it integrates seamlessly with RxSwift, offering a consistent reactive API for gestures that simplifies event handling, reduces boilerplate code, and enables easy composition with other observable sequences.
RxSwift reactive wrapper for view gestures
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Turns gestures into observable sequences, enabling easy composition with other RxSwift streams, as shown in examples using .anyGesture() to combine taps and swipes.
Provides consistent reactive APIs for both iOS and macOS with platform-specific gesture recognizers, allowing cross-platform development with a unified approach.
Includes the .when() operator to filter gesture states (e.g., .recognized, .began), offering fine-grained control over event handling based on documented state tables.
Supports lightweight policy-based or full custom delegate configuration, enabling advanced gesture recognition control without breaking reactive flows, as detailed in the README.
Requires RxSwift and RxCocoa, adding significant dependency overhead and making it unsuitable for projects not already committed to reactive programming.
Only wraps standard UIKit/AppKit gesture recognizers, so custom or third-party gestures aren't supported out of the box, restricting flexibility for unique interactions.
For basic gesture handling, the reactive approach with operators like .when() can introduce unnecessary complexity compared to direct delegate or target-action patterns.