The problem is that when I try to write in the text fields the keyboard cover them up. How can I scroll the text field up to see what am I writing. I have below lines of code to
You can use this two framework
for keyboard
problem solved:
IQKeyboardManager : Link
iOSUtilitiesSource: Link
How can I scroll the text field up to see what am I writing
This can be achieved in two ways:
IQKeyBoardManager
with its Swift variant as IQKeyboardManagerSwift
You can find it on GitHub and cocoapodsTo achieve follow the below steps :
SWIFT 3
Just install IQKeyboardManagerSwift
from Github or cocoapods
Import IQKeyboardManagerSwift
in Appdelegate
Add the below lines of code in AppDelegate didFinishLaunchingWithOptions
method.
IQKeyboardManager.sharedManager().shouldResignOnTouchOutside = true;
Objective-C
IQKeyBoardManager
via any medium#import "IQKeyboardManager.h"
in Appdelegate
Add the below lines of code in AppDelegate didFinishLaunchingWithOptions
method.
IQKeyboardManager.sharedManager.shouldResignOnTouchOutside = true;
And this is Done. This is the only code which you need to write.
The easiest solution to this problem is to put all the elements into one scrollview and then add the keyboard height to the constant of the bottom of the view to superview.
When the keyboard is shown or hidden, iOS sends out the following notifications to any registered observers:
UIKeyboardWillShowNotification UIKeyboardDidShowNotification UIKeyboardWillHideNotification UIKeyboardDidHideNotification
So here is what you can do:
Something like this:
func keyboardWillShow(notification: NSNotification) {
print("KEYBOARD WILL SHOW")
let userInfo:NSDictionary = notification.userInfo! as NSDictionary
let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
bottomConstraint.constant = keyboardHeight + 8
UIView.animate(withDuration: 0.5, animations: { [weak self] in
self?.view.layoutIfNeeded() ?? ()
})
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
bottomConstraint.constant = 8
UIView.animate(withDuration: 0.5, animations: { [weak self] in
self?.view.layoutIfNeeded() ?? ()
})
}