Gibt es eine Möglichkeit, die Größe eines mehrzeiligen TextFelds so anzupassen, dass ich eine Schaltfläche direkt danebeIOS

Programmierung für iOS
Anonymous
 Gibt es eine Möglichkeit, die Größe eines mehrzeiligen TextFelds so anzupassen, dass ich eine Schaltfläche direkt danebe

Post by Anonymous »

In meiner App habe ich ein TextField, in das ein Benutzer mehrere Textzeilen eingeben kann. Ich würde gerne einen Button direkt neben dem TextField platzieren, kann dies aber nicht tun, da SwiftUI das TextField dazu zwingt, horizontal so viel Platz wie möglich einzunehmen, d. h.:

Code: Select all

HStack
{
TextField("", text: self.$textFieldUserInput, axis: .vertical).lineLimit(1...).focused(self.$textFieldIsFocused)
Button(""){}.buttonStyle(.borderedProminent)
Spacer()
}
führt zu:
Image

Wenn ich das möchte:
Image

Ich habe eine gute Lösung gefunden, die das TextField ersetzt, wenn es nicht fokussiert ist, durch eine Text-Komponente:

Code: Select all

ZStack(alignment: .leading)
{
TextField("", text: self.$textFieldUserInput, axis: .vertical)
.lineLimit(1...)
.focused(self.$textFieldIsFocused)
.opacity(self.textFieldIsFocused ? 1 : 0)

if (!self.textFieldIsFocused)
{
HStack
{
Text(self.textFieldUserInput)
.onTapGesture
{
self.textFieldIsFocused = true
}

Button(""){}.buttonStyle(.borderedProminent)
}
}
}
Der Nachteil dabei ist, dass Sie jetzt auf die Textkomponente tippen müssen, um das TextField zu aktivieren, sodass der Benutzer nicht genau entscheiden kann, wo der Cursor beginnen soll (und auch wenn das TextField aktiv ist, müssen Sie entweder die Schaltfläche verschwinden lassen oder damit leben, dass sie wieder ganz nach rechts verschoben wird).
Bearbeiten: Ich habe die meisten Lösungen ausprobiert (SwiftUI TextField benötigt die maximale Breite und wie passt man die Breite eines TextFields dynamisch an seinen Inhalt an?), was die Verwendung von „fixedSize“ beinhaltet, aber das funktioniert nicht, wenn Sie mehrzeiligen Text möchten und axis: .vertical im TextField verwenden müssen.
Ich frage mich, ob es einen besseren Weg gibt, dies zu erreichen, indem man irgendwie ein TextField in der SwiftUI-Größe so anpasst, dass es passt, sodass Sie eine Schaltfläche direkt daneben platzieren können es?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post