Hides Settings Debug section behind swipe gesture

This commit is contained in:
Riley Testut
2019-09-19 22:20:10 -07:00
parent 1117c05349
commit f51e41efab
3 changed files with 54 additions and 0 deletions

View File

@@ -78,6 +78,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
UserDefaults.standard.preferredServerID = Bundle.main.object(forInfoDictionaryKey: Bundle.Info.serverID) as? String UserDefaults.standard.preferredServerID = Bundle.main.object(forInfoDictionaryKey: Bundle.Info.serverID) as? String
#if DEBUG || BETA
UserDefaults.standard.isDebugModeEnabled = true
#endif
self.prepareForBackgroundFetch() self.prepareForBackgroundFetch()
return true return true

View File

@@ -17,6 +17,7 @@ extension UserDefaults
@NSManaged var preferredServerID: String? @NSManaged var preferredServerID: String?
@NSManaged var isBackgroundRefreshEnabled: Bool @NSManaged var isBackgroundRefreshEnabled: Bool
@NSManaged var isDebugModeEnabled: Bool
func registerDefaults() func registerDefaults()
{ {

View File

@@ -43,6 +43,9 @@ class SettingsViewController: UITableViewController
private var prototypeHeaderFooterView: SettingsHeaderFooterView! private var prototypeHeaderFooterView: SettingsHeaderFooterView!
private var debugGestureCounter = 0
private weak var debugGestureTimer: Timer?
@IBOutlet private var accountNameLabel: UILabel! @IBOutlet private var accountNameLabel: UILabel!
@IBOutlet private var accountEmailLabel: UILabel! @IBOutlet private var accountEmailLabel: UILabel!
@IBOutlet private var accountTypeLabel: UILabel! @IBOutlet private var accountTypeLabel: UILabel!
@@ -65,6 +68,12 @@ class SettingsViewController: UITableViewController
self.tableView.register(nib, forHeaderFooterViewReuseIdentifier: "HeaderFooterView") self.tableView.register(nib, forHeaderFooterViewReuseIdentifier: "HeaderFooterView")
let debugModeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(SettingsViewController.handleDebugModeGesture(_:)))
debugModeGestureRecognizer.delegate = self
debugModeGestureRecognizer.direction = .up
debugModeGestureRecognizer.numberOfTouchesRequired = 3
self.tableView.addGestureRecognizer(debugModeGestureRecognizer)
self.update() self.update()
} }
@@ -196,6 +205,26 @@ private extension SettingsViewController
{ {
UserDefaults.standard.isBackgroundRefreshEnabled = sender.isOn UserDefaults.standard.isBackgroundRefreshEnabled = sender.isOn
} }
@IBAction func handleDebugModeGesture(_ gestureRecognizer: UISwipeGestureRecognizer)
{
self.debugGestureCounter += 1
self.debugGestureTimer?.invalidate()
if self.debugGestureCounter >= 3
{
self.debugGestureCounter = 0
UserDefaults.standard.isDebugModeEnabled.toggle()
self.tableView.reloadData()
}
else
{
self.debugGestureTimer = Timer.scheduledTimer(withTimeInterval: 0.4, repeats: false) { [weak self] (timer) in
self?.debugGestureCounter = 0
}
}
}
} }
private extension SettingsViewController private extension SettingsViewController
@@ -213,6 +242,18 @@ private extension SettingsViewController
extension SettingsViewController extension SettingsViewController
{ {
override func numberOfSections(in tableView: UITableView) -> Int
{
var numberOfSections = super.numberOfSections(in: tableView)
if !UserDefaults.standard.isDebugModeEnabled
{
numberOfSections -= 1
}
return numberOfSections
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{ {
let section = Section.allCases[section] let section = Section.allCases[section]
@@ -366,3 +407,11 @@ extension SettingsViewController: MFMailComposeViewControllerDelegate
controller.dismiss(animated: true, completion: nil) controller.dismiss(animated: true, completion: nil)
} }
} }
extension SettingsViewController: UIGestureRecognizerDelegate
{
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool
{
return true
}
}