Есть ли способ получить размер многострочного TextField, чтобы я мог разместить кнопку рядом с ним?IOS

Программируем под IOS
Ответить
Anonymous
 Есть ли способ получить размер многострочного TextField, чтобы я мог разместить кнопку рядом с ним?

Сообщение Anonymous »

В моем приложении есть TextField, в которое пользователь может ввести несколько строк текста. Я хотел бы иметь возможность разместить кнопку прямо рядом с TextField, но я не могу этого сделать, потому что SwiftUI заставит TextField занимать как можно больше места по горизонтали, т.е.:

Код: Выделить всё

HStack
{
TextField("", text: self.$textFieldUserInput, axis: .vertical).lineLimit(1...).focused(self.$textFieldIsFocused)
Button(""){}.buttonStyle(.borderedProminent)
Spacer()
}
приведет к:
Изображение

Когда мне это нужно:
Изображение

Я придумал достойное решение, которое заменяет TextField, когда оно не сфокусировано на текстовом компоненте:

Код: Выделить всё

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)
}
}
}
Недостаток этого подхода заключается в том, что теперь вам нужно нажать на компонент Text, чтобы активировать TextField, поэтому пользователь не может конкретно решить, где он хочет, чтобы курсор начинался (а также, когда TextField активен, вам придется либо заставить кнопку исчезнуть, либо жить с ее смещением полностью вправо снова).
Редактировать: я пробовал большинство решений (SwiftUI) TextField принимает максимальную ширину и Как динамически регулировать ширину TextField в соответствии с его содержимым?), которые включают использование фиксированного размера, но это не работает, если вы хотите многострочный текст и должны использовать ось: .vertical в TextField.
Мне интересно, есть ли лучший способ сделать это, как-то сделать TextField в SwiftUI размером, чтобы вы могли разместить кнопку непосредственно рядом к этому?

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-a-button
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»