Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текстаIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текста

Сообщение Anonymous »

Я создаю демонстрацию Swiftui, где у меня есть список редактируемых текстовых полей, используя Texteditor в Scrollview. Каждое поле динамически создано и использует пользовательский MultilInetextExtFieldView. Пользовательский интерфейс работает нормально, пока я не введу большое количество текста (например, 20–25 строк) в одном из текстовых полей. Как только это произойдет, клавиатура начинает освещать Texteditor, и я не могу прокрутить, чтобы увидеть или редактировать нижнюю часть текста. struct ContentView: View {
@State private var textItems: [TextItem] = [
TextItem(id: 1, text: "First text field"),
TextItem(id: 2, text: "Second text field"),
// More items...
]

@State private var keyboardHeight: CGFloat = 0

var body: some View {
NavigationView {
ScrollViewReader { proxy in
ScrollView {
LazyVStack(spacing: 16) {
ForEach($textItems) { $item in
MultilineTextFieldView(
text: $item.text,
placeholder: "Enter text for item \(item.id)...",
onEditingChanged: { isEditing in
if isEditing {
withAnimation {
proxy.scrollTo(item.id, anchor: .center)
}
}
}, onTextChanged: {}
)
.id(item.id)
}
}
.padding()
.padding(.bottom, keyboardHeight > 0 ? keyboardHeight - 34 : 0)
}
.onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)) { notification in
if let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
let keyboardRect = keyboardFrame.cgRectValue
withAnimation {
keyboardHeight = keyboardRect.height
}
}
}
.onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)) { _ in
withAnimation {
keyboardHeight = 0
}
}
}
.navigationTitle("Multiline Text Fields")
}
}
}

struct MultilineTextFieldView: View {
@Binding var text: String
let placeholder: String
let onEditingChanged: (Bool) -> Void
let onTextChanged: () -> Void

@FocusState private var isFocused: Bool

var body: some View {
VStack(alignment: .leading, spacing: 8) {
HStack {
Text("Text Field")
Spacer()
Text("\(text.count) chars")
}

ZStack(alignment: .topLeading) {
RoundedRectangle(cornerRadius: 12)
.fill(Color(.systemGray6))
.stroke(isFocused ? Color.blue : Color.clear, lineWidth: 2)

if text.isEmpty {
Text(placeholder)
.foregroundColor(.secondary)
.padding(.horizontal, 16)
.padding(.vertical, 12)
.allowsHitTesting(false)
}

TextEditor(text: $text)
.padding(.horizontal, 12)
.padding(.vertical, 8)
.background(Color.clear)
.focused($isFocused)
.onChange(of: isFocused, perform: onEditingChanged)
.onChange(of: text, perform: { _ in onTextChanged() })
.fixedSize(horizontal: false, vertical: true)
}
.frame(minHeight: 40)
}
}
}

struct TextItem: Identifiable {
let id: Int
var text: String
}
< /code>
Что я попробовал: < /strong>
Добавление .fixedSize (horizontal: false, вертикальный: true) к текстовому обработке
padding the scrollview с помощью keyboardheight
с использованием scrollviewreader и. QueyboardwillhideNotification < /p>
Проблема: < /strong>
Когда текст внутри текстового сообщества растет, клавиатура перекрывает нижнюю часть текстового поля, и я не могу прокрутить или редактировать полный текст. Большой текст) остается видимым над клавиатурой.
note
я попробовал с uikit uitextview с uiviewrepresentable и его работает нормально. Но я хочу это со Swiftui Texteditor.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-long-te
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текста
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текста
    Anonymous » » в форуме IOS
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текста
    Anonymous » » в форуме IOS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текста
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Texteditor Inside Scrollview скрыт клавиатурой при вводе длинного текста
    Anonymous » » в форуме IOS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

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