Skip to content

Commit c31bd05

Browse files
committed
refactoring events
1 parent f326d60 commit c31bd05

2 files changed

Lines changed: 33 additions & 35 deletions

File tree

Samples/DGSideNavigationSample-tvOS/DGSideNavigationSample-tvOS/LeftViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class LeftViewController: UIViewController {
1616
}
1717

1818
@IBAction func consoleLog(_ sender: UIButton) {
19-
print("UI Event");
19+
print("UI Event")
2020
}
2121

2222
}

Sources/SideNavigationController.swift

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,9 @@ open class SideNavigationController: UIViewController {
7979
self.visibleSideViewController?.view.isHidden = false
8080
#if os(iOS)
8181
self.setNeedsStatusBarAppearanceUpdate()
82+
#elseif os(tvOS)
83+
self.setNeedsFocusUpdate()
8284
#endif
83-
if #available(iOS 9.0, *) {
84-
self.setNeedsFocusUpdate()
85-
}
8685
}
8786
}
8887
}
@@ -129,8 +128,7 @@ open class SideNavigationController: UIViewController {
129128
self.view.addGestureRecognizer(self.gestures.leftScreenEdgePan)
130129
self.view.addGestureRecognizer(self.gestures.rightScreenEdgePan)
131130
self.sideGestures(enabled: true)
132-
#endif
133-
#if os(tvOS)
131+
#elseif os(tvOS)
134132
self.view.addGestureRecognizer(self.gestures.mainPan)
135133
self.view.addGestureRecognizer(self.gestures.mainTap)
136134
#endif
@@ -156,20 +154,18 @@ open class SideNavigationController: UIViewController {
156154
}
157155

158156
#if os(iOS)
159-
160157
open override var childViewControllerForStatusBarStyle: UIViewController? {
161158
return self.visibleViewController
162159
}
163160

164161
open override var childViewControllerForStatusBarHidden: UIViewController? {
165162
return self.visibleViewController
166163
}
167-
168-
#endif
169-
164+
#elseif os(tvOS)
170165
open override var preferredFocusEnvironments: [UIFocusEnvironment] {
171166
return self.visibleViewController.preferredFocusEnvironments
172167
}
168+
#endif
173169

174170
public func leftSide(viewController: UIViewController, options: Options = Options()) {
175171
self.setSide(Side(viewController: viewController, options: options), direction: .left)
@@ -191,10 +187,14 @@ open class SideNavigationController: UIViewController {
191187
}
192188

193189
private func close(direction: Direction, animated: Bool) {
190+
guard self.visibleSideViewController != nil else {
191+
return; // NO SIDE VISIBLE TO CLOSE
192+
}
194193
guard let side = self.side(direction: direction) else {
195194
// EXCEPTION
196195
return
197196
}
197+
side.viewController.view.endEditing(animated)
198198
UIView.animate(withDuration: animated ? side.options.animationDuration : 0, animations: {
199199
self.visibleSideViewController = nil
200200
side.viewController.view.isHidden = false
@@ -218,14 +218,14 @@ open class SideNavigationController: UIViewController {
218218
}
219219

220220
fileprivate func show(direction: Direction, animated: Bool) {
221-
self.view.endEditing(animated)
222221
guard let side = self.side(direction: direction) else {
223222
// EXCEPTION
224223
return
225224
}
226225
guard side.viewController == self.visibleSideViewController || self.visibleSideViewController == nil else {
227226
return
228227
}
228+
self.mainViewController.view.endEditing(animated)
229229
UIView.animate(withDuration: animated ? side.options.animationDuration : 0, animations: {
230230
self.visibleSideViewController = side.viewController
231231
self.updateSide(with: direction, progress: 1)
@@ -261,7 +261,6 @@ open class SideNavigationController: UIViewController {
261261
}
262262
}
263263
self.overlay.isUserInteractionEnabled = overlayInteractionEnabled
264-
self.mainContainer.isUserInteractionEnabled = !overlayInteractionEnabled
265264
self.gestures.mainPan.isEnabled = panningEnabled
266265
self.gestures.mainTap.isEnabled = enabled
267266
}
@@ -316,7 +315,9 @@ public extension SideNavigationController {
316315
self.mainPan = UIPanGestureRecognizer(target: self, action: #selector(handle(panGesture:)))
317316

318317
self.mainTap = UITapGestureRecognizer(target: self, action: #selector(handle(tapGesture:)))
319-
318+
#if os(tvOS)
319+
self.mainTap.allowedPressTypes = [NSNumber(value: UIPressType.menu.rawValue)]
320+
#endif
320321
self.mainTap.require(toFail: self.mainPan)
321322
}
322323

@@ -366,19 +367,27 @@ public extension SideNavigationController {
366367

367368
fileprivate extension SideNavigationController {
368369

369-
fileprivate func updateBack(side: Side, direction: Direction, progress: CGFloat) {
370-
self.overlay.alpha = side.options.overlayOpacity * progress
371-
self.overlay.backgroundColor = side.options.overlayColor
372-
self.mainContainer.layer.shadowColor = side.options.shadowCGColor
373-
self.mainContainer.layer.shadowOpacity = Float(side.options.shadowOpacity)
374-
self.mainContainer.layer.shadowRadius = 10
375-
if side.options.scale != 1 {
376-
let scale = 1 - (1 - side.options.scale) * progress
370+
fileprivate func apply(options: Options, front: UIView!, back: UIView!, progress: CGFloat) {
371+
self.overlay.alpha = options.overlayOpacity * progress
372+
self.overlay.backgroundColor = options.overlayColor
373+
front.layer.shadowColor = options.shadowCGColor
374+
front.layer.shadowOpacity = Float(options.shadowOpacity)
375+
front.layer.shadowRadius = 10
376+
back.layer.shadowColor = nil
377+
back.layer.shadowOpacity = 0
378+
back.layer.shadowRadius = 3
379+
if options.scale != 1 {
380+
let scale = 1 - (1 - options.scale) * progress
377381
self.mainContainer.transform = CGAffineTransform.identity.scaledBy(x: scale, y: scale)
378382
}
383+
}
384+
385+
fileprivate func updateBack(side: Side, direction: Direction, progress: CGFloat) {
386+
let sideView: UIView! = side.viewController.view
387+
self.apply(options: side.options, front: self.mainContainer, back: sideView, progress: progress)
379388
var mainFrame = self.mainContainer.frame
380389
let viewBounds = self.view.bounds
381-
var sideFrame = side.viewController.view.frame
390+
var sideFrame = sideView.frame
382391
sideFrame.size.width = viewBounds.width * side.options.widthPercent
383392
sideFrame.size.height = viewBounds.height
384393
let parallaxWidth = sideFrame.width / 3
@@ -393,23 +402,12 @@ fileprivate extension SideNavigationController {
393402
break
394403
}
395404
self.mainContainer.frame = mainFrame
396-
side.viewController.view.frame = sideFrame
405+
sideView.frame = sideFrame
397406
}
398407

399408
fileprivate func updateFront(side: Side, direction: Direction, progress: CGFloat) {
400-
self.overlay.alpha = side.options.overlayOpacity * progress
401-
self.overlay.backgroundColor = side.options.overlayColor
402-
self.mainContainer.layer.shadowColor = nil
403-
self.mainContainer.layer.shadowOpacity = 0
404-
self.mainContainer.layer.shadowRadius = 3
405409
let sideView: UIView! = side.viewController.view
406-
sideView.layer.shadowColor = side.options.shadowCGColor
407-
sideView.layer.shadowOpacity = Float(side.options.shadowOpacity)
408-
sideView.layer.shadowRadius = 10
409-
if side.options.scale != 1 {
410-
let scale = 1 - (1 - side.options.scale) * progress
411-
self.mainContainer.transform = CGAffineTransform.identity.scaledBy(x: scale, y: scale)
412-
}
410+
self.apply(options: side.options, front: sideView, back: self.mainContainer, progress: progress)
413411
let viewBounds = self.view.bounds
414412
var sideFrame = sideView.frame
415413
sideFrame.size.width = viewBounds.width * side.options.widthPercent

0 commit comments

Comments
 (0)