Я новичок в Swift / iOS, и я делаю простое приложение, чтобы отслеживать аптечку у меня дома. У меня проблемы с управлением экранной клавиатурой для ввода текста.
Приложение в основном представляет собой табличное представление с записями данных, и при нажатии на одну из них вы переходите в подробное представление с некоторыми подробностями.
В этом подробном представлении у меня есть UIScrollView, который ограничен равным Безопасной области, внутри него UIView с именем «Контейнерное представление» того же размера, что и у Scrollview, и внутри этого дополнительного представления для составления экран с использованием AutoLayout (без предупреждений).
Внутри одного из этих дочерних представлений есть UITextField, который я использую для сбора заметок, набранных пользователем с помощью экранной клавиатуры.
Я добавил код для управления экранной клавиатурой, отрегулировал нижнюю вставку вида, когда она появляется, чтобы клавиатура не скрывала текстовое поле, и удалил эту вставку, когда клавиатура исчезает.
В итоге я получил следующий код, полученный от hackingwithswift.com (и наблюдатели свойств настроены для правильного вызова этой функции, и я подтвердил, что она работает):
func adjustInsetForKeyboardShowHide(notification: Notification) {
let userInfo = notification.userInfo!
let keyboardScreenEndFrame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, from: view.window)
if notification.name == UIResponder.keyboardWillHideNotification {
scrollView.contentInset = UIEdgeInsets.zero
} else {
scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardViewEndFrame.height, right: 0)
}
scrollView.scrollIndicatorInsets = scrollView.contentInset
}
Однако, несмотря на то, что функция вызывается правильно, когда на экране появляется клавиатура, изображение не прокручивается. Я не уверен, лежит ли проблема здесь или где-то в IB ...
Что меня поразило, так это то, что я могу прокрутить вниз вручную после того, как на экране появится клавиатура, до нужного уровня, он просто не делает это автоматически, как мне бы этого хотелось. Как и ожидалось, представление не прокручивается, когда экранная клавиатура не отображается, поэтому, очевидно, функция настройки работает нормально, она просто не прокручивается сама по себе.
Когда клавиатура исчезает, вид снова восстанавливается до нормального, так что часть работает нормально.
Есть идеи?
Большое спасибо!