Как получить высоту клавиатуры на нескольких экранах с Swiftui и переместить кнопкуIOS

Программируем под IOS
Ответить
Anonymous
 Как получить высоту клавиатуры на нескольких экранах с Swiftui и переместить кнопку

Сообщение Anonymous »

Следующий код получает высоту клавиатуры при отображении клавиатуры и перемещает кнопку на высоте клавиатуры. экраны? < /p>

import SwiftUI

struct ContentView: View {
@ObservedObject private var keyboard = KeyboardResponder()

var body: some View {
NavigationView {
VStack {
Text("ContentView")

Spacer()

NavigationLink(destination: SecondContentView()) {
Text("Next")
}
.offset(x: 0, y: -keyboard.currentHeight)
}
}
}
}

import SwiftUI

struct SecondContentView: View {
@ObservedObject private var keyboard = KeyboardResponder()

var body: some View {
VStack {
Text("SubContentView")

Spacer()

NavigationLink(destination: ThirdContentView()) {
Text("Next")
}
.offset(x: 0, y: -keyboard.currentHeight)
}
}
}

class KeyboardResponder: ObservableObject {
private var _center: NotificationCenter
@Published var currentHeight: CGFloat = 0

init(center: NotificationCenter = .default) {
_center = center
_center.addObserver(self, selector: #selector(keyBoardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
_center.addObserver(self, selector: #selector(keyBoardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}

deinit {
_center.removeObserver(self)
}

@objc func keyBoardWillShow(notification: Notification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
currentHeight = keyboardSize.height
}
}

@objc func keyBoardWillHide(notification: Notification) {
currentHeight = 0
}
}


Подробнее здесь: https://stackoverflow.com/questions/577 ... ve-the-but
Ответить

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

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

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

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

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