diff --git a/ProjectClock/Account.swift b/ProjectClock/Account.swift index 11464f5..a7ef64f 100644 --- a/ProjectClock/Account.swift +++ b/ProjectClock/Account.swift @@ -59,11 +59,17 @@ class AccountViewController: UIViewController /** View controller for registration and login */ -class LoginVC: UIViewController +class LoginVC: EndEditingOnReturn { @IBOutlet weak var username: UITextField! @IBOutlet weak var password: UITextField! + override func viewDidLoad() + { + username.delegate = self + password.delegate = self + } + /** Send user login/registration request @@ -127,6 +133,7 @@ class LoginVC: UIViewController */ @IBAction func register(_ sender: Any) { + self.view.endEditing(true) userRequest(login: false) } @@ -135,6 +142,7 @@ class LoginVC: UIViewController */ @IBAction func login(_ sender: Any) { + self.view.endEditing(true) userRequest(login: true) } } @@ -390,7 +398,7 @@ extension FamilyVC: UITableViewDelegate, UITableViewDataSource /** Create or join a family */ -class FamilyCreateJoinVC: UIViewController +class FamilyCreateJoinVC: EndEditingOnReturn { let createMode: Bool @IBOutlet weak var lFamilyNameOrId: UILabel! @@ -424,6 +432,10 @@ class FamilyCreateJoinVC: UIViewController { tNameOrId.text = "\(localStorage.string(forKey: "name")!)'s Family" } + + // End editing on return + tNameOrId.delegate = self + tPin.delegate = self } /** diff --git a/ProjectClock/AddAlarmViewController.swift b/ProjectClock/AddAlarmViewController.swift index c2fae3a..e46da33 100644 --- a/ProjectClock/AddAlarmViewController.swift +++ b/ProjectClock/AddAlarmViewController.swift @@ -7,21 +7,25 @@ import UIKit -class AddAlarmViewController: UIViewController +class AddAlarmViewController: EndEditingOnReturn { // Editing variables var alarmCell: AlarmTableCell? = nil - var editFlag: Bool = false + var editMode: Bool { alarmCell != nil } var originalTime: String = "" - override func viewDidLoad() { - if let alarmCell = alarmCell { - - //Toggle editing mode - editFlag = true + override func viewDidLoad() + { + // End edit on return + alarmNameTextField.delegate = self + + // Load alarm to edit if in edit mode + if let alarmCell = alarmCell + { + // Toggle editing mode viewTitle.text = "Edit Alarm" - //Convert string to Date + // Convert string to Date let dateFormatter = DateFormatter() dateFormatter.dateFormat = "h:mma" let date = dateFormatter.date(from: "\(alarmCell.time.text!)\(alarmCell.ampm.text!)") @@ -30,7 +34,7 @@ class AddAlarmViewController: UIViewController timePicker.date = date! originalTime = String(dateFormatter.string(from: date!).dropLast(2)) - //Toggle proper repeats + // Toggle proper repeats if let repeats = alarmCell.repeatText.text { if repeats == "Repeats: Weekdays" { repeatWeekdaysSwitch.isOn = true @@ -60,6 +64,7 @@ class AddAlarmViewController: UIViewController } } } + // UI: Make scroll view scrollable @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var scrollViewInner: UIView! @@ -111,7 +116,7 @@ class AddAlarmViewController: UIViewController Called when the user clicks the remove button and brings them back to the home page */ @IBAction func cancelAlarmButton(_ sender: Any) { - if editFlag { + if editMode { removeCurrentAlarm() } @@ -129,7 +134,7 @@ class AddAlarmViewController: UIViewController let alarms = Alarms.fromLocal() // Check if editing alarm - if (editFlag) + if (editMode) { oldAlarm = removeCurrentAlarm() } @@ -147,7 +152,7 @@ class AddAlarmViewController: UIViewController Alarms.fromLocal().apply { $0.list.append(alarm) }.localSave(); //Schedules notification for the alarm - if editFlag + if editMode { Notification.removeNotification(alarm: oldAlarm!) } diff --git a/ProjectClock/AlarmActivationViewController.swift b/ProjectClock/AlarmActivationViewController.swift index fa8a48f..9b543f5 100644 --- a/ProjectClock/AlarmActivationViewController.swift +++ b/ProjectClock/AlarmActivationViewController.swift @@ -15,7 +15,7 @@ var alarmStarted = false /** View controlling alarm activation and dismissal */ -class AlarmActivationViewController: UIViewController +class AlarmActivationViewController: EndEditingOnReturn { var timer: Timer? var currentAlarm: Alarm @@ -72,6 +72,9 @@ class AlarmActivationViewController: UIViewController // Run alarm runAlarm() + + // End edit on return + puzzleAnswerInput.delegate = self } /** diff --git a/ProjectClock/DebugViewController.swift b/ProjectClock/DebugViewController.swift index 21056a0..19af623 100644 --- a/ProjectClock/DebugViewController.swift +++ b/ProjectClock/DebugViewController.swift @@ -8,7 +8,7 @@ import UIKit import UserNotifications -class DebugViewController: UIViewController +class DebugViewController: EndEditingOnReturn { @IBOutlet weak var userModeButton: UIButton! var darkMode = false @@ -29,6 +29,9 @@ class DebugViewController: UIViewController print(error.localizedDescription) } } + + // End editing on return + wvmInput.delegate = self } //Sends a test notification diff --git a/ProjectClock/Utils.swift b/ProjectClock/Utils.swift index d66242e..1071cb9 100644 --- a/ProjectClock/Utils.swift +++ b/ProjectClock/Utils.swift @@ -269,3 +269,15 @@ extension UserDefaults set { self[key] = newValue?.rawValue } } } + +class EndEditingOnReturn: UIViewController, UITextFieldDelegate +{ + /** + End editing on return + */ + func textFieldShouldReturn(_ scoreText: UITextField) -> Bool + { + self.view.endEditing(true) + return true + } +}