HandlersKit is a light-weight iOS Framework that allows you to use modern closure syntax instead of the target-action and delegate patterns. This framework covers the most popular UIKit classes.
Closure syntax instead of UIControl's target-action mechanism.
control.on(.valueChanged) {
print("UIControl's value changed")
}
Convenient methods for the most common cases.
button.onTap {
print("UIButton touch up inside")
}
slider.onChange { newValue in
print("UISlider changed value")
}
Access to the same object inside the closure without typecasting or optional unwrapping.
let button = MyActivityIndicatorButton()
button.onTap { (sender: MyActivityIndicatorButton) in
sender.showActivityIndicator()
}
Every method allows chaining.
textField.shouldChangeString { fromString, toString in
print("\(fromString) -> \(toString)")
return true
}.shouldBeginEditing {
true
}.didEndEditing {
print("UITextField did end editing")
}
- HandlersKit extends UIControl, UIBarButtonItem, UIGestureRecognizer, UITextField and UITextView.
- Closures stored as associated objects. No singleton or Notification Center used. It means that all objects captured by this closure will be released when that UIKit object released.
- iOS 12.0+ / tvOS 12.0+
- Xcode 13.0+
- Swift 5.5+
To install HandlersKit using CocoaPods add the following line to your Podfile
:
pod 'HandlersKit'
Then run in Terminal:
$ pod install
To integrate HandlersKit into your project using Carthage, specify it in your Cartfile:
github "hhru/HandlersKit"
To integrate HandlersKit into your project using Swift Package Manager, you have two different ways:
- In Xcode, go to
File > Swift Packages > Add Package Dependency...
and enter the following URL:
https://github.com/hhru/HandlersKit
- Or add the following as a dependency to your
Package.swift
:
.package(url: "https://github.com/hhru/HandlersKit.git", from: "1.2.0")
- Go to releases page.
- Download the latest release
Source code
. - Drag and drop all .swift files from
HandlersKit-x.y.z/Sources
folder into your Xcode project. Check the option Copy items if needed.
HandlersKit is released under the MIT License. (see LICENSE).