If a TextField is being used within a ScrollView, when the TextField becomes tall enough the input caret can go offscreen behind the keyboard. There's no straightforward way to keep the caret visible.
One could use .id(_:) on something at the bottom of the TextField and scroll to that with the ScrollViewProxy but how would they know when to scroll?
- They could detect a height change of the
TextFieldbut if the user is typing towards the center of the field then we end up scrolling them away from their edit location to the bottom. - They could detect a length change in the edited text but that has the same issue as #1.
- They could diff the edited text to see if the edits were at the end but then we're getting much more complex.
TLDR: We need a straightforward way to keep the TextField's input caret visible.
What I could see working would be something like a modifier for TextField like .cursorID(_:). We could then just scroll to that ID on input changes.
Here's a similar post on StackOverflow.