Bladeren bron

make credentials controller better usable with keyboard only

Jonas Reinsch 7 jaren geleden
bovenliggende
commit
c332c839d9
2 gewijzigde bestanden met toevoegingen van 31 en 3 verwijderingen
  1. 31 1
      deltachat-ios/CredentialsController.swift
  2. 0 2
      deltachat-ios/NewContactController.swift

+ 31 - 1
deltachat-ios/CredentialsController.swift

@@ -84,9 +84,13 @@ class CredentialsController: UITableViewController {
     let passwordCell = TextFieldCell.makePasswordCell()
     var doneButton:UIBarButtonItem?
     
+    func readyForLogin() -> Bool {
+        return Utils.isValid(model.email) && !model.password.isEmpty
+    }
+    
     var model:(email:String, password:String) = ("", "") {
         didSet {
-            if (Utils.isValid(model.email) && !model.password.isEmpty) {
+            if readyForLogin() {
                 doneButton?.isEnabled = true
             } else {
                 doneButton?.isEnabled = false
@@ -106,6 +110,13 @@ class CredentialsController: UITableViewController {
         
         emailCell.textField.addTarget(self, action: #selector(CredentialsController.emailTextChanged), for: UIControlEvents.editingChanged)
         passwordCell.textField.addTarget(self, action: #selector(CredentialsController.passwordTextChanged), for: UIControlEvents.editingChanged)
+        
+        emailCell.textField.delegate = self
+        passwordCell.textField.delegate = self
+    }
+    
+    override func viewDidAppear(_ animated: Bool) {
+        emailCell.textField.becomeFirstResponder()
     }
     
     @objc func emailTextChanged() {
@@ -153,3 +164,22 @@ class CredentialsController: UITableViewController {
         // Dispose of any resources that can be recreated.
     }
 }
+
+extension CredentialsController: UITextFieldDelegate {
+    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
+        if textField == emailCell.textField {
+            if let emailText = emailCell.textField.text {
+                // only jump to next field if valid email
+                if Utils.isValid(emailText) {
+                    passwordCell.textField.becomeFirstResponder()
+                }
+            }
+        }
+        if textField == passwordCell.textField {
+            if readyForLogin() {
+                self.saveAccountButtonPressed()
+            }
+        }
+        return true
+    }
+}

+ 0 - 2
deltachat-ios/NewContactController.swift

@@ -142,6 +142,4 @@ extension NewContactController: UITextFieldDelegate {
         }
         return true
     }
-
-    
 }