<Description> : Adding open access to UIViewControllerExtensions to allow

subclassing and overriding methods outside of model purview.

<Type> : fix
This commit is contained in:
Arunav Sanyal 2017-03-15 22:30:27 -07:00 committed by Sanyal
parent ce80fde7d8
commit 31e6033f6d
1 changed files with 34 additions and 34 deletions

View File

@ -12,17 +12,17 @@ extension UIViewController {
// MARK: - Notifications // MARK: - Notifications
///EZSE: Adds an NotificationCenter with name and Selector ///EZSE: Adds an NotificationCenter with name and Selector
public func addNotificationObserver(_ name: String, selector: Selector) { open func addNotificationObserver(_ name: String, selector: Selector) {
NotificationCenter.default.addObserver(self, selector: selector, name: NSNotification.Name(rawValue: name), object: nil) NotificationCenter.default.addObserver(self, selector: selector, name: NSNotification.Name(rawValue: name), object: nil)
} }
///EZSE: Removes an NSNotificationCenter for name ///EZSE: Removes an NSNotificationCenter for name
public func removeNotificationObserver(_ name: String) { open func removeNotificationObserver(_ name: String) {
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: name), object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: name), object: nil)
} }
///EZSE: Removes NotificationCenter'd observer ///EZSE: Removes NotificationCenter'd observer
public func removeNotificationObserver() { open func removeNotificationObserver() {
NotificationCenter.default.removeObserver(self) NotificationCenter.default.removeObserver(self)
} }
@ -31,7 +31,7 @@ extension UIViewController {
///EZSE: Adds a NotificationCenter Observer for keyboardWillShowNotification() ///EZSE: Adds a NotificationCenter Observer for keyboardWillShowNotification()
/// ///
/// You also need to implement ```keyboardWillShowNotification(_ notification: Notification)``` /// You also need to implement ```keyboardWillShowNotification(_ notification: Notification)```
public func addKeyboardWillShowNotification() { open func addKeyboardWillShowNotification() {
self.addNotificationObserver(NSNotification.Name.UIKeyboardWillShow.rawValue, selector: #selector(UIViewController.keyboardWillShowNotification(_:))) self.addNotificationObserver(NSNotification.Name.UIKeyboardWillShow.rawValue, selector: #selector(UIViewController.keyboardWillShowNotification(_:)))
} }
@ -45,38 +45,38 @@ extension UIViewController {
///EZSE: Adds a NotificationCenter Observer for keyboardWillHideNotification() ///EZSE: Adds a NotificationCenter Observer for keyboardWillHideNotification()
/// ///
/// You also need to implement ```keyboardWillHideNotification(_ notification: Notification)``` /// You also need to implement ```keyboardWillHideNotification(_ notification: Notification)```
public func addKeyboardWillHideNotification() { open func addKeyboardWillHideNotification() {
self.addNotificationObserver(NSNotification.Name.UIKeyboardWillHide.rawValue, selector: #selector(UIViewController.keyboardWillHideNotification(_:))) self.addNotificationObserver(NSNotification.Name.UIKeyboardWillHide.rawValue, selector: #selector(UIViewController.keyboardWillHideNotification(_:)))
} }
///EZSE: Adds a NotificationCenter Observer for keyboardDidHideNotification() ///EZSE: Adds a NotificationCenter Observer for keyboardDidHideNotification()
/// ///
/// You also need to implement ```keyboardDidHideNotification(_ notification: Notification)``` /// You also need to implement ```keyboardDidHideNotification(_ notification: Notification)```
public func addKeyboardDidHideNotification() { open func addKeyboardDidHideNotification() {
self.addNotificationObserver(NSNotification.Name.UIKeyboardDidHide.rawValue, selector: #selector(UIViewController.keyboardDidHideNotification(_:))) self.addNotificationObserver(NSNotification.Name.UIKeyboardDidHide.rawValue, selector: #selector(UIViewController.keyboardDidHideNotification(_:)))
} }
///EZSE: Removes keyboardWillShowNotification()'s NotificationCenter Observer ///EZSE: Removes keyboardWillShowNotification()'s NotificationCenter Observer
public func removeKeyboardWillShowNotification() { open func removeKeyboardWillShowNotification() {
self.removeNotificationObserver(NSNotification.Name.UIKeyboardWillShow.rawValue) self.removeNotificationObserver(NSNotification.Name.UIKeyboardWillShow.rawValue)
} }
///EZSE: Removes keyboardDidShowNotification()'s NotificationCenter Observer ///EZSE: Removes keyboardDidShowNotification()'s NotificationCenter Observer
public func removeKeyboardDidShowNotification() { open func removeKeyboardDidShowNotification() {
self.removeNotificationObserver(NSNotification.Name.UIKeyboardDidShow.rawValue) self.removeNotificationObserver(NSNotification.Name.UIKeyboardDidShow.rawValue)
} }
///EZSE: Removes keyboardWillHideNotification()'s NotificationCenter Observer ///EZSE: Removes keyboardWillHideNotification()'s NotificationCenter Observer
public func removeKeyboardWillHideNotification() { open func removeKeyboardWillHideNotification() {
self.removeNotificationObserver(NSNotification.Name.UIKeyboardWillHide.rawValue) self.removeNotificationObserver(NSNotification.Name.UIKeyboardWillHide.rawValue)
} }
///EZSE: Removes keyboardDidHideNotification()'s NotificationCenter Observer ///EZSE: Removes keyboardDidHideNotification()'s NotificationCenter Observer
public func removeKeyboardDidHideNotification() { open func removeKeyboardDidHideNotification() {
self.removeNotificationObserver(NSNotification.Name.UIKeyboardDidHide.rawValue) self.removeNotificationObserver(NSNotification.Name.UIKeyboardDidHide.rawValue)
} }
public func keyboardDidShowNotification(_ notification: Notification) { open func keyboardDidShowNotification(_ notification: Notification) {
if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue { if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue {
let frame = value.cgRectValue let frame = value.cgRectValue
@ -84,7 +84,7 @@ extension UIViewController {
} }
} }
public func keyboardWillShowNotification(_ notification: Notification) { open func keyboardWillShowNotification(_ notification: Notification) {
if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue { if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue {
let frame = value.cgRectValue let frame = value.cgRectValue
@ -92,7 +92,7 @@ extension UIViewController {
} }
} }
public func keyboardWillHideNotification(_ notification: Notification) { open func keyboardWillHideNotification(_ notification: Notification) {
if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue { if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue {
let frame = value.cgRectValue let frame = value.cgRectValue
@ -100,7 +100,7 @@ extension UIViewController {
} }
} }
public func keyboardDidHideNotification(_ notification: Notification) { open func keyboardDidHideNotification(_ notification: Notification) {
if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue { if let nInfo = (notification as NSNotification).userInfo, let value = nInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue {
let frame = value.cgRectValue let frame = value.cgRectValue
@ -108,7 +108,7 @@ extension UIViewController {
} }
} }
public func keyboardWillShowWithFrame(_ frame: CGRect) { open func keyboardWillShowWithFrame(_ frame: CGRect) {
} }
@ -116,22 +116,22 @@ extension UIViewController {
} }
public func keyboardWillHideWithFrame(_ frame: CGRect) { open func keyboardWillHideWithFrame(_ frame: CGRect) {
} }
public func keyboardDidHideWithFrame(_ frame: CGRect) { open func keyboardDidHideWithFrame(_ frame: CGRect) {
} }
//EZSE: Makes the UIViewController register tap events and hides keyboard when clicked somewhere in the ViewController. //EZSE: Makes the UIViewController register tap events and hides keyboard when clicked somewhere in the ViewController.
public func hideKeyboardWhenTappedAround() { open func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap) view.addGestureRecognizer(tap)
} }
public func hideKeyboardWhenTappedAroundAndCancelsTouchesInView() { open func hideKeyboardWhenTappedAroundAndCancelsTouchesInView() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
view.addGestureRecognizer(tap) view.addGestureRecognizer(tap)
} }
@ -139,14 +139,14 @@ extension UIViewController {
#endif #endif
//EZSE: Dismisses keyboard //EZSE: Dismisses keyboard
public func dismissKeyboard() { open func dismissKeyboard() {
view.endEditing(true) view.endEditing(true)
} }
// MARK: - VC Container // MARK: - VC Container
///EZSE: Returns maximum y of the ViewController ///EZSE: Returns maximum y of the ViewController
public var top: CGFloat { open var top: CGFloat {
if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController { if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController {
return visibleViewController.top return visibleViewController.top
} }
@ -162,7 +162,7 @@ extension UIViewController {
} }
///EZSE: Returns minimum y of the ViewController ///EZSE: Returns minimum y of the ViewController
public var bottom: CGFloat { open var bottom: CGFloat {
if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController { if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController {
return visibleViewController.bottom return visibleViewController.bottom
} }
@ -178,7 +178,7 @@ extension UIViewController {
} }
///EZSE: Returns Tab Bar's height ///EZSE: Returns Tab Bar's height
public var tabBarHeight: CGFloat { open var tabBarHeight: CGFloat {
if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController { if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController {
return visibleViewController.tabBarHeight return visibleViewController.tabBarHeight
} }
@ -189,7 +189,7 @@ extension UIViewController {
} }
///EZSE: Returns Navigation Bar's height ///EZSE: Returns Navigation Bar's height
public var navigationBarHeight: CGFloat { open var navigationBarHeight: CGFloat {
if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController { if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController {
return visibleViewController.navigationBarHeight return visibleViewController.navigationBarHeight
} }
@ -200,7 +200,7 @@ extension UIViewController {
} }
///EZSE: Returns Navigation Bar's color ///EZSE: Returns Navigation Bar's color
public var navigationBarColor: UIColor? { open var navigationBarColor: UIColor? {
get { get {
if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController { if let me = self as? UINavigationController, let visibleViewController = me.visibleViewController {
return visibleViewController.navigationBarColor return visibleViewController.navigationBarColor
@ -212,51 +212,51 @@ extension UIViewController {
} }
///EZSE: Returns current Navigation Bar ///EZSE: Returns current Navigation Bar
public var navBar: UINavigationBar? { open var navBar: UINavigationBar? {
return navigationController?.navigationBar return navigationController?.navigationBar
} }
/// EZSwiftExtensions /// EZSwiftExtensions
public var applicationFrame: CGRect { open var applicationFrame: CGRect {
return CGRect(x: view.x, y: top, width: view.w, height: bottom - top) return CGRect(x: view.x, y: top, width: view.w, height: bottom - top)
} }
// MARK: - VC Flow // MARK: - VC Flow
///EZSE: Pushes a view controller onto the receivers stack and updates the display. ///EZSE: Pushes a view controller onto the receivers stack and updates the display.
public func pushVC(_ vc: UIViewController) { open func pushVC(_ vc: UIViewController) {
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
} }
///EZSE: Pops the top view controller from the navigation stack and updates the display. ///EZSE: Pops the top view controller from the navigation stack and updates the display.
public func popVC() { open func popVC() {
_ = navigationController?.popViewController(animated: true) _ = navigationController?.popViewController(animated: true)
} }
/// EZSE: Added extension for popToRootViewController /// EZSE: Added extension for popToRootViewController
public func popToRootVC() { open func popToRootVC() {
_ = navigationController?.popToRootViewController(animated: true) _ = navigationController?.popToRootViewController(animated: true)
} }
///EZSE: Presents a view controller modally. ///EZSE: Presents a view controller modally.
public func presentVC(_ vc: UIViewController) { open func presentVC(_ vc: UIViewController) {
present(vc, animated: true, completion: nil) present(vc, animated: true, completion: nil)
} }
///EZSE: Dismisses the view controller that was presented modally by the view controller. ///EZSE: Dismisses the view controller that was presented modally by the view controller.
public func dismissVC(completion: (() -> Void)? ) { open func dismissVC(completion: (() -> Void)? ) {
dismiss(animated: true, completion: completion) dismiss(animated: true, completion: completion)
} }
///EZSE: Adds the specified view controller as a child of the current view controller. ///EZSE: Adds the specified view controller as a child of the current view controller.
public func addAsChildViewController(_ vc: UIViewController, toView: UIView) { open func addAsChildViewController(_ vc: UIViewController, toView: UIView) {
self.addChildViewController(vc) self.addChildViewController(vc)
toView.addSubview(vc.view) toView.addSubview(vc.view)
vc.didMove(toParentViewController: self) vc.didMove(toParentViewController: self)
} }
///EZSE: Adds image named: as a UIImageView in the Background ///EZSE: Adds image named: as a UIImageView in the Background
public func setBackgroundImage(_ named: String) { open func setBackgroundImage(_ named: String) {
let image = UIImage(named: named) let image = UIImage(named: named)
let imageView = UIImageView(frame: view.frame) let imageView = UIImageView(frame: view.frame)
imageView.image = image imageView.image = image