Guest User

Untitled

a guest
Jun 24th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. open class func setupHardwareInputAccessoryView(_ storyTextNode: StoryTextNode, textView: UITextView, notification: Notification) {
  2. textView.inputAccessoryView?.isHidden = true
  3.  
  4. let textEditDoneViewHeight: CGFloat = 42
  5. let textOptionsViewHeight: CGFloat = 210
  6.  
  7. let inputAccessoryView = UIView()
  8. // https://forums.developer.apple.com/message/317221#317221
  9. inputAccessoryView.tag = hardwareInputAccessoryViewTag
  10. inputAccessoryView.backgroundColor = .clear
  11. inputAccessoryView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: textEditDoneViewHeight + textOptionsViewHeight)
  12. textView.inputAccessoryView = inputAccessoryView
  13. textView.reloadInputViews()
  14. let foundationView = UIView()
  15. foundationView.backgroundColor = .yellow
  16.  
  17. if !HardwareKeyboardManager.shared.needsAnimation {
  18. foundationView.frame = inputAccessoryView.frame
  19.  
  20. let textOptionsView = UINib(nibName: TextOptionsView.defaultReuseIdentifier, bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! TextOptionsView
  21. textOptionsView.delegate = storyTextNode
  22. textOptionsView.frame = CGRect(x: 0, y: textEditDoneViewHeight, width: foundationView.frame.width, height: textOptionsViewHeight)
  23. foundationView.addSubview(textOptionsView)
  24.  
  25. let textEditAccesoryView = UINib(nibName: TextEditAccesoryView.defaultReuseIdentifier, bundle: .main).instantiate(withOwner: nil, options: nil)[0] as! TextEditAccesoryView
  26. textEditAccesoryView.isSoftwareKeyboard = false
  27. textEditAccesoryView.frame = CGRect(x: 0, y: 0, width: foundationView.frame.width, height: textEditDoneViewHeight)
  28.  
  29. foundationView.addSubview(textEditAccesoryView)
  30. textView.inputAccessoryView?.addSubview(foundationView)
  31.  
  32. textEditAccesoryView.doneTappedClosure = {
  33. textView.endEditing(true)
  34. }
  35.  
  36. textView.inputAccessoryView?.isHidden = false
  37. return
  38. }
  39.  
  40. // with animation
  41. textView.inputAccessoryView?.isHidden = false
  42.  
  43. HardwareKeyboardManager.shared.needsAnimation = false
  44.  
  45. guard let duration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double else { return }
  46. guard let curve = notification.userInfo?[UIKeyboardAnimationCurveUserInfoKey] as? NSNumber else { return }
  47.  
  48. let textOptionsView = UINib(nibName: TextOptionsView.defaultReuseIdentifier, bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! TextOptionsView
  49. textOptionsView.delegate = storyTextNode
  50.  
  51.  
  52. let textEditAccesoryView = UINib(nibName: TextEditAccesoryView.defaultReuseIdentifier, bundle: .main).instantiate(withOwner: nil, options: nil)[0] as! TextEditAccesoryView
  53. textEditAccesoryView.isSoftwareKeyboard = false
  54.  
  55. foundationView.frame = CGRect(x: 0, y: inputAccessoryView.frame.height, width: inputAccessoryView.frame.width, height: inputAccessoryView.frame.height)
  56. textOptionsView.frame = CGRect(x: 0, y: textEditDoneViewHeight, width: foundationView.frame.width, height: textOptionsViewHeight)
  57. textEditAccesoryView.frame = CGRect(x: 0, y: 0, width: foundationView.frame.width, height: textEditDoneViewHeight)
  58.  
  59. textView.inputAccessoryView?.addSubview(foundationView)
  60.  
  61. foundationView.addSubview(textOptionsView)
  62. foundationView.addSubview(textEditAccesoryView)
  63.  
  64. textEditAccesoryView.doneTappedClosure = {
  65. textView.endEditing(true)
  66. }
  67.  
  68. Timer.scheduledTimer(withTimeInterval: 0.57, repeats: false) { (_) in
  69. DispatchQueue.main.async {
  70. UIView.animate(withDuration: duration, delay: 0, options: UIViewAnimationOptions(rawValue: UInt(truncating: curve)), animations: {
  71. foundationView.frame = CGRect(x: 0, y: 0, width: inputAccessoryView.frame.width, height: inputAccessoryView.frame.height)
  72. }, completion: { (_) in
  73. })
  74. }
  75. }
  76. }
Add Comment
Please, Sign In to add comment