Advertisement
Guest User

Scrolling the view if the keyboard is covering it.

a guest
Feb 26th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.51 KB | None | 0 0
  1. //
  2. //  SignUpViewController.swift
  3. //  Culpability
  4. //
  5. //  Created by Lazar Nikolov on 2/26/16.
  6. //  Copyright © 2016 Lazar Nikolov. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10.  
  11. class SignUpViewController: UIViewController {
  12.  
  13.     @IBOutlet weak var tfUsername: UITextField!
  14.     @IBOutlet weak var tfPassword: UITextField!
  15.     @IBOutlet weak var tfConfirmPassword: UITextField!
  16.    
  17.     override func viewDidLoad() {
  18.         super.viewDidLoad()
  19.        
  20.         NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
  21.         NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
  22.  
  23.     }
  24.  
  25.     func textFieldShouldReturn(textField: UITextField) -> Bool {
  26.         if textField == tfUsername {
  27.             tfPassword.becomeFirstResponder()
  28.         } else if textField == tfPassword {
  29.             tfConfirmPassword.becomeFirstResponder()
  30.         } else if textField == tfConfirmPassword {
  31.             self.view.endEditing(true)
  32.         }
  33.         return true
  34.     }
  35.    
  36.     func keyboardWillShow(notification: NSNotification) {
  37.         if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
  38.             if self.tfUsername.isFirstResponder() {
  39.                 let usernameBottomY = self.tfUsername.frame.origin.y + self.tfUsername.frame.height
  40.                
  41.                 if usernameBottomY <= self.view.frame.height && usernameBottomY >= (self.view.frame.height - keyboardSize.height) {
  42.                     // Scroll it
  43.                     let verticalDifference = usernameBottomY - (self.view.frame.height - keyboardSize.height)
  44.                     UIView.animateWithDuration(0.3, animations: {
  45.                         self.view.frame.origin.y -= verticalDifference
  46.                     })
  47.                 }
  48.             } else if self.tfPassword.isFirstResponder() {
  49.                 let passwordBottomY = self.tfPassword.frame.origin.y + self.tfPassword.frame.height
  50.                
  51.                 if passwordBottomY <= self.view.frame.height && passwordBottomY >= (self.view.frame.height - keyboardSize.height) {
  52.                     // Scroll it
  53.                     let verticalDifference = passwordBottomY - (self.view.frame.height - keyboardSize.height)
  54.                     UIView.animateWithDuration(0.3, animations: {
  55.                         self.view.frame.origin.y -= verticalDifference
  56.                     })
  57.                 }
  58.             } else if self.tfConfirmPassword.isFirstResponder() {
  59.                 let confirmPasswordBottomY = self.tfConfirmPassword.frame.origin.y + self.tfConfirmPassword.frame.height
  60.                
  61.                 if confirmPasswordBottomY <= self.view.frame.height && confirmPasswordBottomY >= (self.view.frame.height - keyboardSize.height) {
  62.                     // Scroll it
  63.                     let verticalDifference = confirmPasswordBottomY - (self.view.frame.height - keyboardSize.height)
  64.                     UIView.animateWithDuration(0.3, animations: {
  65.                         self.view.frame.origin.y -= verticalDifference
  66.                     })
  67.                 }
  68.             }
  69.         }
  70.     }
  71.    
  72.     func keyboardWillHide(notification: NSNotification) {
  73.         if self.view.frame.origin.y < 0 {
  74.             UIView.animateWithDuration(0.3, animations: {
  75.                 self.view.frame.origin.y = 0
  76.             })
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement