iOS Как переместить полосу прокрутки, когда Keybord виден - PullRequest
0 голосов
/ 28 ноября 2018

Я создаю приложение, которое должно создать регистрационную форму, чтобы принимать пользовательский ввод.Для ввода у меня есть 4 поля.Я настроил 4 поля в UIStackView и сделал вертикальное центрирование колла, так как оно было дизайном приложения.Все идет хорошо.но в небольших устройствах клавиатура была переполнена некоторыми полями.

Чтобы решить мою проблему, я занимался НИОКР и использовал IQKeyboardManager.Это мне очень помогло.но я видел, что в полях все, что вы можете перейти в другие поля, вы должны использовать панель инструментов, предоставленную IQKeyboardManager.Но теперь приложение дней вперед вы можете увидеть, что вы можете прокручивать вид вверх и вниз.

Что я сделал: Итак, чтобы решить мою проблему, я создал UIScrollView вокруг моего стека, который содержит мои поля, но это никогда не помогало мне.Потому что это создает проблемы дизайна.Stackview никогда не входит вертикально в ScrollView.Также scrollview включен все время, независимо от того, появилась клавиатура или нет.Посмотрите на следующую картинку, которая выдает меня за пользовательский интерфейс

enter image description here

Что я хочу: Все, что я хочу, это до тех пор, пока не появится клавиатураscrollview не должен быть прокручиваемым.После того, как клавиатура появилась, прокрутка должна быть прокручиваемой.Также я хочу проверить, есть ли необходимость сделать прокрутку прокручиваемой или нет.Потому что в более крупных устройствах, таких как iPhone 8plus, я думаю, что нет необходимости показывать scrollview, так как клавиатура всегда ниже последней UITextfield.Это просто перекрытие в меньшем телефоне, как iPhone 5.

Пожалуйста, помогите мне.Это моя идея, что приложения используют scrollview.Они могут использовать что-то другое, что действует подобно просмотру прокрутки во время просмотра, когда клавиатура открыта, и не показывает просмотр прокрутки, когда клавиатура не открыта.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018
  1. Создание представления содержимого в представлении прокрутки.
  2. Установить ограничение просмотра содержимого (сверху, снизу, впереди и сзади) как (0,0,0,0) и равную ширину и равную высоту с видом прокрутки.

Для установкиограничение просмотра прокрутки, вы можете сослаться

https://medium.com/@pradeep_chauhan/how-to-configure-a-uiscrollview-with-auto-layout-in-interface-builder-218dcb4022d7

После этого внедрить наблюдателя клавиатуры в вашем контроллере представления.

override func viewDidLoad()
    {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil)
}

 func keyboardWillShow(notification: NSNotification) {
      // set scroll view content size height as per your need (subtract keyboard height from original)
}

func keyboardWillHide(notification: NSNotification) {
    // reset scroll view content size height to original
}
0 голосов
/ 28 ноября 2018

Используйте уведомления keyboardWillShowNotification и keyboardWillHideNotification для изменения высоты scrollView.На keyboardWillShowNotification вы уменьшаете высоту scrollView на высоту клавиатуры.А в keyboardWillHideNotification вы просто сбрасываете высоту, как это было раньше.Любые сомнения, пожалуйста, прокомментируйте.

...