Я пишу небольшое приложение для iOS и macOS. Ввод текста осуществляется с помощью (сейчас) TextField и кнопки. Проблема с TextField заключается в том, что оно представляет собой одну строку и не позволяет вводить многострочный текст. Итак, я попробовал вместо этого использовать TextEditor, но я могу либо настроить его так, чтобы он не увеличивался при добавлении большего количества текста, либо с самого начала он отображался очень большим.
Я говорю, что в идеале , оно будет имитировать поведение текстовой записи в iMessage: начинается с того же размера, что и TextField, но при необходимости увеличивается для размещения многострочного текста, такого как TextEditor.
Вот код, который я использую для этого представления:
Код: Выделить всё
var inputView: some View {
HStack {
ZStack {
//tried this here...
//TextEditor(text: $taskText)
TextField("New entry...", text: $taskText, onCommit: { didTapAddTask() })
.frame(maxHeight: 35)
.padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 0))
.clipped()
.accentColor(.black)
.cornerRadius(8)
.textFieldStyle(RoundedBorderTextFieldStyle())
Text(taskText).opacity(0).padding(.all, 8)
}
Button(action: AddNewEntry, label: { Image(systemName: "plus.circle")
.imageScale(.large)
.foregroundColor(.primary)
.font(.title) }).padding(15).foregroundColor(.primary)
}
}
Я пробовал разные подходы, найденные в разных вопросах других пользователей, но не могу понять.
Вот как это выглядит:
Как выглядит TextEdit
Я также пробовал что-то подобное и играл с разными значениями для .frame :
Код: Выделить всё
TextEditor(text: $taskText)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 200)
.border(Color.primary, width: 1)
.padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 0))
Спасибо.
О, и я использую Xcode 12.5. 1, а целью на данный момент являются iOS 14.x и macOS Big Sur.
ИЗМЕНИТЬ, чтобы ответить на jnpdx.
Когда я добавляю код из Dynamic TextEditor, перекрывающийся с другими представлениями, вот как выглядит и не меняется динамически.
Как это выглядит при запуске приложения
Как оно выглядит при вводе текста
Подробнее здесь: https://stackoverflow.com/questions/685 ... text-entry