Archived
122 lines
4.9 KiB
Swift
122 lines
4.9 KiB
Swift
//
|
|
// FirstTimeViewController.swift
|
|
// AvH Plan
|
|
//
|
|
// Created by Deniz Duezgoeren on 21.09.19.
|
|
// Copyright © 2019 Deniz Duezgoeren. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class FirstTimeViewController: UIViewController, UITextFieldDelegate {
|
|
|
|
@IBOutlet weak var scrollView: UIScrollView!
|
|
let df = DataFetcher.sharedInstance
|
|
let prefs = UserDefaults.standard
|
|
|
|
@IBOutlet weak var nameTextField: UITextField!
|
|
@IBOutlet weak var gradeTextField: UITextField!
|
|
@IBOutlet weak var courseTextField: UITextField!
|
|
@IBOutlet weak var defaultPlanSegmentedControl: UISegmentedControl!
|
|
@IBOutlet weak var textToolbar: UIToolbar!
|
|
|
|
var activeTextField: UITextField?
|
|
|
|
@IBAction func gradeInfoButton(_ sender: UIButton) {
|
|
self.present(self.df.getInfoAlert(for: "grade"), animated: true)
|
|
}
|
|
|
|
@IBAction func courseInfoButton(_ sender: UIButton) {
|
|
self.present(self.df.getInfoAlert(for: "course"), animated: true)
|
|
}
|
|
|
|
@IBAction func textDismissButton(_ sender: UIBarButtonItem) {
|
|
view.endEditing(true)
|
|
}
|
|
|
|
func textFieldDidBeginEditing(_ textField: UITextField) {
|
|
textField.inputAccessoryView = textToolbar
|
|
self.activeTextField = textField
|
|
}
|
|
|
|
func textFieldDidEndEditing(_ textField: UITextField) {
|
|
self.activeTextField = nil
|
|
}
|
|
|
|
func registerForKeyboardNotifications(){
|
|
//Adding notifies on keyboard appearing
|
|
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
|
|
}
|
|
|
|
func deregisterFromKeyboardNotifications(){
|
|
//Removing notifies on keyboard appearing
|
|
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)
|
|
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
|
|
}
|
|
|
|
@objc func keyboardWasShown(notification: NSNotification){
|
|
//Need to calculate keyboard exact size due to Apple suggestions
|
|
self.scrollView.isScrollEnabled = true
|
|
let info = notification.userInfo!
|
|
let keyboardSize = (info[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
|
|
let contentInsets: UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: keyboardSize!.height + self.textToolbar.frame.height, right: 0.0)
|
|
|
|
self.scrollView.contentInset = contentInsets
|
|
self.scrollView.scrollIndicatorInsets = contentInsets
|
|
|
|
var aRect: CGRect = self.view.frame
|
|
aRect.size.height -= keyboardSize!.height
|
|
if let activeField = self.activeTextField {
|
|
if (!aRect.contains(activeField.frame.origin)) {
|
|
self.scrollView.scrollRectToVisible(activeField.frame, animated: true)
|
|
}
|
|
}
|
|
}
|
|
|
|
@objc func keyboardWillBeHidden(notification: NSNotification){
|
|
//Once keyboard disappears, restore original positions
|
|
let info = notification.userInfo!
|
|
let keyboardSize = (info[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
|
|
let contentInsets: UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: -(keyboardSize!.height + self.textToolbar.frame.height), right: 0.0)
|
|
self.scrollView.contentInset = contentInsets
|
|
self.scrollView.scrollIndicatorInsets = contentInsets
|
|
self.view.endEditing(true)
|
|
self.scrollView.isScrollEnabled = false
|
|
}
|
|
|
|
@IBAction func finishSetupButton(_ sender: UIBarButtonItem) {
|
|
self.prefs.set(self.nameTextField.text, forKey: "username")
|
|
self.prefs.set(self.gradeTextField.text, forKey: "classes")
|
|
self.prefs.set(self.courseTextField.text, forKey: "courses")
|
|
self.prefs.set(self.defaultPlanSegmentedControl.selectedSegmentIndex, forKey: "default-plan")
|
|
self.prefs.set(true, forKey: "setup_finished")
|
|
self.prefs.set(true, forKey: "auto_refresh")
|
|
|
|
if let s = storyboard?.instantiateViewController(withIdentifier: "AppTabBarController") as? CustomTabBarController {
|
|
s.modalPresentationStyle = .fullScreen
|
|
self.present(s, animated: true)
|
|
}
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
super.init(coder: coder)
|
|
self.registerForKeyboardNotifications()
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
self.nameTextField.delegate = self
|
|
self.gradeTextField.delegate = self
|
|
self.courseTextField.delegate = self
|
|
self.scrollView.isDirectionalLockEnabled = true
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
self.deregisterFromKeyboardNotifications()
|
|
}
|
|
}
|