A KeyboardAvoider for SwiftUI. Inspired by the simplicity of keyboard_avoider in Flutter.
- Autoscroll to TextField
- Swipe keyboard to dismiss
Create a Package.swift
file.
import PackageDescription
let package = Package(
name: "TestProject",
dependencies: [
.package(url: "https://github.com/michaelhenry/KeyboardAvoider.git", from: "1.0.0")
]
)
target 'MyApp' do
pod 'KeyboardAvoider', '~> 1.0'
end
import KeyboardAvoider
KeyboardAvoider {
// ... Your view with TextFields
}
Example:
KeyboardAvoider {
VStack {
TextField("First name", text: self.$firstname)
TextField("Last name", text: self.$lastname)
TextField("Email", text: self.$email)
TextField("Password", text: self.$password)
TextField("Confirm password", text: self.$password)
Button("Sign Up") {
}
Button("Already have an account?") {
}
}
.padding(.horizontal, 16.0)
}
Or in case you don't want to make your view scrollable, you can just only apply the .avoidKeyboard()
into your main view.
VStack {
TextField("First name", text: self.$firstname)
TextField("Last name", text: self.$lastname)
TextField("Email", text: self.$email)
TextField("Password", text: self.$password)
TextField("Confirm password", text: self.$password)
Button("Sign Up") {
}
Button("Already have an account?") {
}
}
.avoidKeyboard()
-
How to remove the extra space between the textfield and the keyboard
You can remove it by ignoring the
safe area - bottom
. Please see the Sample Project
.edgesIgnoringSafeArea(.bottom)