TextFieldViewController.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. //
  2. // TextFieldViewController.swift
  3. // IQKeyboard
  4. //
  5. // Created by Iftekhar on 23/09/14.
  6. // Copyright (c) 2014 Iftekhar. All rights reserved.
  7. //
  8. import UIKit
  9. import IQKeyboardManagerSwift
  10. import IQDropDownTextField
  11. class TextFieldViewController: UIViewController, UITextViewDelegate, UIPopoverPresentationControllerDelegate {
  12. @IBOutlet var textField3: UITextField!
  13. @IBOutlet var textView1: IQTextView!
  14. @IBOutlet var textView2: UITextView!
  15. @IBOutlet var dropDownTextField: IQDropDownTextField!
  16. @IBOutlet var buttonPush: UIButton!
  17. @IBOutlet var buttonPresent: UIButton!
  18. @objc func previousAction(_ sender: UITextField) {
  19. print("PreviousAction")
  20. }
  21. @objc func nextAction(_ sender: UITextField) {
  22. print("nextAction")
  23. }
  24. @objc func doneAction(_ sender: UITextField) {
  25. print("doneAction")
  26. }
  27. deinit {
  28. textField3 = nil
  29. textView1 = nil
  30. dropDownTextField = nil
  31. }
  32. override func viewDidLoad() {
  33. super.viewDidLoad()
  34. textView2.enableMode = .disabled
  35. textView1.delegate = self
  36. // textView1.attributedPlaceholder = NSAttributedString(string: "Attributed string from code is supported too", attributes: [.foregroundColor: UIColor.red])
  37. textField3.keyboardToolbar.previousBarButton.setTarget(self, action: #selector(self.previousAction(_:)))
  38. textField3.keyboardToolbar.nextBarButton.setTarget(self, action: #selector(self.nextAction(_:)))
  39. textField3.keyboardToolbar.doneBarButton.setTarget(self, action: #selector(self.doneAction(_:)))
  40. dropDownTextField.keyboardDistanceFromTextField = 150
  41. var itemLists = [String]()
  42. itemLists.append("Zero Line Of Code")
  43. itemLists.append("No More UIScrollView")
  44. itemLists.append("No More Subclasses")
  45. itemLists.append("No More Manual Work")
  46. itemLists.append("No More #imports")
  47. itemLists.append("Device Orientation support")
  48. itemLists.append("UITextField Category for Keyboard")
  49. itemLists.append("Enable/Desable Keyboard Manager")
  50. itemLists.append("Customize InputView support")
  51. itemLists.append("IQTextView for placeholder support")
  52. itemLists.append("Automanage keyboard toolbar")
  53. itemLists.append("Can set keyboard and textFiled distance")
  54. itemLists.append("Can resign on touching outside")
  55. itemLists.append("Auto adjust textView's height")
  56. itemLists.append("Adopt tintColor from textField")
  57. itemLists.append("Customize keyboardAppearance")
  58. itemLists.append("Play sound on next/prev/done")
  59. dropDownTextField.itemList = itemLists
  60. }
  61. override func viewWillAppear(_ animated: Bool) {
  62. super.viewWillAppear(animated)
  63. if self.presentingViewController != nil {
  64. buttonPush.isHidden = true
  65. buttonPresent.setTitle("Dismiss", for: .normal)
  66. }
  67. }
  68. @IBAction func presentClicked (_ sender: AnyObject!) {
  69. if self.presentingViewController == nil {
  70. let controller: UIViewController = (storyboard?.instantiateViewController(withIdentifier: "TextFieldViewController"))!
  71. let navController: UINavigationController = UINavigationController(rootViewController: controller)
  72. navController.navigationBar.tintColor = self.navigationController?.navigationBar.tintColor
  73. navController.navigationBar.barTintColor = self.navigationController?.navigationBar.barTintColor
  74. navController.navigationBar.titleTextAttributes = self.navigationController?.navigationBar.titleTextAttributes
  75. navController.modalTransitionStyle = UIModalTransitionStyle(rawValue: Int(arc4random()%4))!
  76. // TransitionStylePartialCurl can only be presented by FullScreen style.
  77. if navController.modalTransitionStyle == UIModalTransitionStyle.partialCurl {
  78. navController.modalPresentationStyle = UIModalPresentationStyle.fullScreen
  79. } else {
  80. navController.modalPresentationStyle = UIModalPresentationStyle.formSheet
  81. }
  82. present(navController, animated: true, completion: nil)
  83. } else {
  84. dismiss(animated: true, completion: nil)
  85. }
  86. }
  87. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  88. guard let identifier = segue.identifier else {
  89. return
  90. }
  91. if identifier == "SettingsNavigationController" {
  92. let controller = segue.destination
  93. controller.modalPresentationStyle = .popover
  94. controller.popoverPresentationController?.barButtonItem = sender as? UIBarButtonItem
  95. let heightWidth = max(UIScreen.main.bounds.width, UIScreen.main.bounds.height)
  96. controller.preferredContentSize = CGSize(width: heightWidth, height: heightWidth)
  97. controller.popoverPresentationController?.delegate = self
  98. }
  99. }
  100. func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
  101. return .none
  102. }
  103. func prepareForPopoverPresentation(_ popoverPresentationController: UIPopoverPresentationController) {
  104. self.view.endEditing(true)
  105. }
  106. func textViewDidBeginEditing(_ textView: UITextView) {
  107. print("textViewDidBeginEditing")
  108. }
  109. override var shouldAutorotate: Bool {
  110. return true
  111. }
  112. }