Provides an interface for use the addObserverForName
safely and easily.
- Comprehensive Unit Test Coverage
- Carthage support
- Thread-safe
EventBox.onMainThread(target, name: "reload") { _ in
// UI
}
EventBox.onBackgroundThread(target, name:"reload") { _ in
// API Access
}
EventBox.post("reload")
EventBox.off(target) // Remove all the observers of the target
EventBox.off(target, "reload") // Remove observers of the same name of the target
EventBox.onMainThread(target, name:"getStatus") { n in
// API Access
let status = n.object as TwitterStatus // sender
}
let status = TwitterStatus()
EventBox.post("getStatus", sender: status)
// MARK: - View Life Cycle
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
EventBox.onMainThread(self, name: UIKeyboardWillShowNotification, handler: { n in
self.keyboardWillChangeFrame(n, showsKeyboard: true) })
EventBox.onMainThread(self, name: UIKeyboardWillHideNotification, handler: { n in
self.keyboardWillChangeFrame(n, showsKeyboard: false) })
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
EventBox.off(self)
}
// MARK: - Keyboard Event Notifications
func keyboardWillChangeFrame(notification: NSNotification, showsKeyboard: Bool) {
let userInfo = notification.userInfo!
let animationDuration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as NSNumber).doubleValue
let keyboardScreenEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()
if showsKeyboard {
let orientation: UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation
if (orientation.isLandscape) {
containerViewButtomConstraint.constant = keyboardScreenEndFrame.size.width
} else {
containerViewButtomConstraint.constant = keyboardScreenEndFrame.size.height
}
} else {
containerViewButtomConstraint.constant = 0
}
self.view.setNeedsUpdateConstraints()
UIView.animateWithDuration(animationDuration, delay: 0, options: .BeginFromCurrentState, animations: {
self.containerView.alpha = showsKeyboard ? 1 : 0
self.view.layoutIfNeeded()
}, completion: { finished in
if !showsKeyboard {
self.view.hidden = true
}
})
}
- iOS 8.0+
- Xcode 7.3+
Add the following line to your Cartfile
github "s-aska/EventBox"
Add the following line to your Podfile
use_frameworks!
pod 'EventBox'
EventBox is released under the MIT license. See LICENSE for details.