Guest User

Untitled

a guest
Feb 18th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. var activeField: UITextField? = nil
  2.  
  3. func registerForKeyboardNotifications(){
  4. NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
  5. NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
  6. }
  7.  
  8. func removeForKeyboardNotifications(){
  9. NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil)
  10. NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil)
  11. }
  12.  
  13. @objc func keyboardWillShow(notification: Notification) {
  14. guard activeField != nil else {
  15. return
  16. }
  17.  
  18. let userInfo = notification.userInfo
  19. let kbFrameSize = (userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue.size
  20.  
  21. let contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbFrameSize.height, 0.0)
  22. scrollView.contentInset = contentInsets
  23. scrollView.scrollIndicatorInsets = contentInsets
  24.  
  25. var aRect = self.view.frame
  26. aRect.size.height -= kbFrameSize.height
  27. if (!aRect.contains(activeField!.frame.origin)) {
  28. scrollView.scrollRectToVisible(activeField!.frame, animated: true)
  29. }
  30. }
  31.  
  32. @objc func keyboardWillHide(notification: Notification) {
  33. let contentInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)
  34. scrollView.contentInset = contentInsets
  35. scrollView.scrollIndicatorInsets = contentInsets
  36. }
  37.  
  38. func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
  39. activeField = textField;
  40. return true
  41. }
  42.  
  43. func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
  44. activeField = nil;
  45. return true
  46. }
Add Comment
Please, Sign In to add comment