ManualToolbarViewController.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. //
  2. // ManualToolbarViewController.swift
  3. // IQKeyboardManager
  4. //
  5. // Created by InfoEnum02 on 20/04/15.
  6. // Copyright (c) 2015 Iftekhar. All rights reserved.
  7. //
  8. import UIKit
  9. import IQKeyboardManagerSwift
  10. class ManualToolbarViewController: UIViewController, UIPopoverPresentationControllerDelegate {
  11. @IBOutlet var textField1: UITextField!
  12. @IBOutlet var textField2: UITextField!
  13. @IBOutlet var textView3: UITextView!
  14. @IBOutlet var textField4: UITextField!
  15. @IBOutlet var textField5: UITextField!
  16. deinit {
  17. textField1 = nil
  18. textField2 = nil
  19. textView3 = nil
  20. textField4 = nil
  21. textField5 = nil
  22. }
  23. override func viewDidLoad() {
  24. super.viewDidLoad()
  25. textField1.addPreviousNextDoneOnKeyboardWithTarget(self, previousAction: #selector(self.previousAction(_:)), nextAction: #selector(self.nextAction(_:)), doneAction: #selector(self.doneAction(_:)), shouldShowPlaceholder: true)
  26. textField1.keyboardToolbar.previousBarButton.isEnabled = false
  27. textField1.keyboardToolbar.nextBarButton.isEnabled = true
  28. textField2.addPreviousNextDoneOnKeyboardWithTarget(self, previousAction: #selector(self.previousAction(_:)), nextAction: #selector(self.nextAction(_:)), doneAction: #selector(self.doneAction(_:)), shouldShowPlaceholder: true)
  29. textField2.keyboardToolbar.previousBarButton.isEnabled = true
  30. textField2.keyboardToolbar.nextBarButton.isEnabled = false
  31. textView3.addPreviousNextDoneOnKeyboardWithTarget(self, previousAction: #selector(self.previousAction(_:)), nextAction: #selector(self.nextAction(_:)), doneAction: #selector(self.doneAction(_:)), shouldShowPlaceholder: true)
  32. textField4.keyboardToolbar.titleBarButton.setTarget(self, action: #selector(self.titleAction(_:)))
  33. textField4.toolbarPlaceholder = "Saved Passwords"
  34. textField4.addDoneOnKeyboardWithTarget(self, action: #selector(self.doneAction(_:)), shouldShowPlaceholder: true)
  35. textField5.inputAccessoryView = UIView()
  36. }
  37. @objc func previousAction(_ sender: UITextField!) {
  38. if textField2.isFirstResponder {
  39. textView3.becomeFirstResponder()
  40. } else if textView3.isFirstResponder {
  41. textField1.becomeFirstResponder()
  42. }
  43. }
  44. @objc func nextAction(_ sender: UITextField!) {
  45. if textField1.isFirstResponder {
  46. textView3.becomeFirstResponder()
  47. } else if textView3.isFirstResponder {
  48. textField2.becomeFirstResponder()
  49. }
  50. }
  51. @objc func doneAction(_ sender: UITextField!) {
  52. self.view.endEditing(true)
  53. }
  54. @objc func titleAction(_ sender: UIButton) {
  55. let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
  56. alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
  57. alertController.addAction(UIAlertAction(title: "test@example.com", style: .default, handler: { (_: UIAlertAction) in
  58. self.textField4.text = "test"
  59. }))
  60. alertController.addAction(UIAlertAction(title: "demo@example.com", style: .default, handler: { (_: UIAlertAction) in
  61. self.textField4.text = "demo"
  62. }))
  63. alertController.popoverPresentationController?.sourceView = sender
  64. self.present(alertController, animated: true, completion: nil)
  65. }
  66. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  67. guard let identifier = segue.identifier else {
  68. return
  69. }
  70. if identifier == "SettingsNavigationController" {
  71. let controller = segue.destination
  72. controller.modalPresentationStyle = .popover
  73. controller.popoverPresentationController?.barButtonItem = sender as? UIBarButtonItem
  74. let heightWidth = max(UIScreen.main.bounds.width, UIScreen.main.bounds.height)
  75. controller.preferredContentSize = CGSize(width: heightWidth, height: heightWidth)
  76. controller.popoverPresentationController?.delegate = self
  77. }
  78. }
  79. func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
  80. return .none
  81. }
  82. func prepareForPopoverPresentation(_ popoverPresentationController: UIPopoverPresentationController) {
  83. self.view.endEditing(true)
  84. }
  85. override var shouldAutorotate: Bool {
  86. return true
  87. }
  88. }