Skip to content

michaelhenry/KeyboardAvoider

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

Screenshot Screenshot

Deployment status Version License Platform

⌨️ KeyboardAvoider {}

A KeyboardAvoider for SwiftUI. Inspired by the simplicity of keyboard_avoider in Flutter.

Features

  • Autoscroll to TextField
  • Swipe keyboard to dismiss

Installation

Swift Package Manager

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")
  ]
)

Cocoapods

target 'MyApp' do
  pod 'KeyboardAvoider', '~> 1.0'
end

How to use

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()

FAQ

  • 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)