Skip to content

Commit 216ebba

Browse files
author
Douglas Mennella
committed
Work around constraint bugs in Apple
1 parent 741ce01 commit 216ebba

1 file changed

Lines changed: 20 additions & 11 deletions

File tree

Classes/Capture/AddNoteViewController.swift

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,11 @@ final class AddNoteViewController: UIViewController {
5454
fatalError("init(coder:) has not been implemented")
5555
}
5656

57-
private lazy var toolsBar: UIToolbar = {
58-
let bar = UIToolbar()
57+
private var toolsBar: UIToolbar = {
58+
let bar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 45))
5959
bar.items = [
6060
UIBarButtonItem(title: "🔗", style: .plain, target: self, action: #selector(addLinkMarkup)),
6161
UIBarButtonItem(title: "📅", style: .plain, target: self, action: #selector(setDatePickerView)),
62-
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
6362
]
6463
bar.sizeToFit()
6564
return bar
@@ -84,13 +83,13 @@ final class AddNoteViewController: UIViewController {
8483
case plain = "Plain"
8584
}
8685

87-
private lazy var datePickBar: UIToolbar = {
88-
let bar = UIToolbar()
89-
let cancelButton = UIBarButtonItem( title: "Cancel", style: .plain, target: self, action: #selector(setDefaultInputView) )
90-
let scheduleButton = UIBarButtonItem( title: DateType.schedule.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)) )
91-
let deadlineButton = UIBarButtonItem( title: DateType.deadline.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)) )
92-
let agendaButton = UIBarButtonItem( title: DateType.agenda.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)) )
93-
let plainButton = UIBarButtonItem( title: DateType.plain.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)) )
86+
private var datePickBar: UIToolbar = {
87+
let bar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 45))
88+
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(setDefaultInputView))
89+
let scheduleButton = UIBarButtonItem(title: DateType.schedule.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)))
90+
let deadlineButton = UIBarButtonItem(title: DateType.deadline.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)))
91+
let agendaButton = UIBarButtonItem(title: DateType.agenda.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)))
92+
let plainButton = UIBarButtonItem(title: DateType.plain.rawValue, style: .plain, target: self, action: #selector(insertDate(_:)))
9493
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
9594
bar.items = [ scheduleButton, deadlineButton, agendaButton, plainButton, spacer, cancelButton ]
9695
bar.sizeToFit()
@@ -126,9 +125,19 @@ final class AddNoteViewController: UIViewController {
126125
self.setDefaultInputView()
127126
}
128127

128+
func updateConstraintsWhenCustomKeyboardIsShown(customInputView: UIView) {
129+
guard let superview = customInputView.superview else { return }
130+
for constraint in superview.constraints {
131+
if (constraint.secondItem === customInputView && constraint.secondAttribute == .top) {
132+
constraint.priority = UILayoutPriority(999)
133+
}
134+
}
135+
}
136+
129137
@objc func setDefaultInputView() {
130-
self.textView.inputView = nil
131138
self.textView.inputAccessoryView = self.toolsBar
139+
self.textView.inputView = nil
140+
updateConstraintsWhenCustomKeyboardIsShown(customInputView: self.datePicker)
132141
self.textView.reloadInputViews()
133142
}
134143

0 commit comments

Comments
 (0)