Skip to content

Commit 5261809

Browse files
committed
Set the font in the updateUIView method
Also, wrap becomeFirstResponder in async dispatch This fixes issues when we’re updating the responder chain every time SwiftUI refreshes the view, which can have unpredictable side effects.
1 parent acbe4f1 commit 5261809

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

iOS/PostEditor/MultilineTextView.swift

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,12 @@ private struct UITextViewWrapper: UIViewRepresentable {
1717
textField.delegate = context.coordinator
1818

1919
textField.isEditable = true
20-
textField.font = UIFont.preferredFont(forTextStyle: .body)
2120
textField.isSelectable = true
2221
textField.isUserInteractionEnabled = true
2322
textField.isScrollEnabled = false
2423
textField.backgroundColor = UIColor.clear
2524
textField.smartDashesType = .no
2625

27-
let font = textStyle
28-
let fontMetrics = UIFontMetrics(forTextStyle: .largeTitle)
29-
textField.font = fontMetrics.scaledFont(for: font)
30-
3126
if nil != onDone {
3227
textField.returnKeyType = .next
3328
}
@@ -41,8 +36,14 @@ private struct UITextViewWrapper: UIViewRepresentable {
4136
uiView.text = self.text
4237
}
4338

44-
if uiView.window != nil, isEditing {
45-
uiView.becomeFirstResponder()
39+
let font = textStyle
40+
let fontMetrics = UIFontMetrics(forTextStyle: .largeTitle)
41+
uiView.font = fontMetrics.scaledFont(for: font)
42+
43+
if uiView.window != nil && isEditing {
44+
DispatchQueue.main.async {
45+
uiView.becomeFirstResponder()
46+
}
4647
}
4748

4849
UITextViewWrapper.recalculateHeight(view: uiView, result: $calculatedHeight)

0 commit comments

Comments
 (0)