Как прокрутить scrollView, чтобы TextField перемещался над клавиатурой в SwiftUI? - PullRequest
4 голосов
/ 02 февраля 2020

У меня настроен пользовательский интерфейс, в котором в ScrollView есть 6 полей:

...
         ScrollView {

                IndicatorTextField(
                    index: 0,
                    hint: "Full Name",
                    icon: .imageUserBlue,
                    activeFieldTag: self.$activeFieldTag,
                    type: .alphabet
                ).padding(.top, 48)

                IndicatorTextField(
                    index: 1,
                    hint: "Email Address",
                    icon: .imageEmail,
                    activeFieldTag: self.$activeFieldTag,
                    type: .emailAddress
                ).padding(.top, 8)

                IndicatorTextField(
                    index: 2,
                    hint: "Home Town",
                    icon: .imageLocation,
                    activeFieldTag: self.$activeFieldTag,
                    type: .alphabet
                ).padding(.top, 8)

                IndicatorTextField(
                    index: 3,
                    hint: "Password",
                    icon: .imageLock,
                    activeFieldTag: self.$activeFieldTag,
                    indicatorColor: .reddishPink
                ).padding(.top, 8)

                IndicatorTextField(
                    index: 4,
                    hint: "Date of Birth",
                    icon: .imageCalender,
                    activeFieldTag: self.$activeFieldTag,
                    type: .numbersAndPunctuation,
                    indicatorColor: .reddishPink
                ).padding(.top, 8)

                IndicatorTextField(
                    index: 5,
                    hint: "Gender",
                    icon: .imageUserRed,
                    activeFieldTag: self.$activeFieldTag,
                    indicatorColor: .reddishPink,
                    returnKey: .default
                ).padding(.top, 8)

                Spacer()
                    .frame(width: 0, height: -keyboardObserver.lastViewAdjustment)
            }
            .background(GeometryGetter(rect: $keyboardObserver.lastViewRect))
...

Вот keyboardObserver

Когда клавиатура затем я просто изменяю высоту Spacer, достаточную для прокрутки до последнего поля.

Теперь я хочу автоматически прокрутить первый ответчик над клавиатурой.

Кто-нибудь знает, как прокрутить ScrollView с помощью SwiftUI кода?

1 Ответ

0 голосов
/ 16 февраля 2020

До сих пор я не нашел способа прокрутки ScrollView в SwiftUI, но я использовал обходной путь, где я говорю родительскому представлению прокрутки прокручивать из оболочки для UITextField: https://lostmoa.com/blog/ScrollTextFieldIntoVisibleRange/

Я нашел, что это более простое решение, чем упаковка UIScrollView.

...