Есть ли способ подогнать 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 активен, вам придется либо заставить кнопку исчезнуть, либо жить с ее смещением полностью вправо снова).
Мне интересно, есть ли лучший способ сделать это, как-то сделать TextField в размере SwiftUI, чтобы можно было разместить кнопку прямо рядом с ним?

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

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

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

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

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

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