Move UIScrollView when keyboard comes into place
Solution 1
You may want to try the highly recommended "TPKeyboardAvoidingScrollView", available from: https://github.com/michaeltyson/TPKeyboardAvoiding
Works like a charm...
Solution 2
Have you ever added an observer for that specific notification? Make sure that in your loadView
method you do this:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
Don't forget to unregister the observer on viewDidUnload
method like this:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Let me know if that works out!
Comments
-
thenetimp over 3 years
[Edit:] The problem has been solved. I did not have my delegates linked properly in
UIBuilder
. Code is good!I am trying to resize a scrollview when the keyboard appears. I went to the developer docs and found this information.
On the left "Managing the keyboard".
In the documentation it shows a bit of code to detect the size of the keyboard and then to resize a
UIScrollView
. I have placed anNSLog
message in the code for function- (void)keyboardWasShown:(NSNotification*)aNotification
so I see that the function is actually being called, but when I try to toNSLog
thekbSize
.height it is always valued at 0.Why does the code that apple provide for this purpose not work?
- (void)keyboardWasShown:(NSNotification*)aNotification { NSDictionary* info = [aNotification userInfo]; CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); scrollView.contentInset = contentInsets; scrollView.scrollIndicatorInsets = contentInsets; // If active text field is hidden by keyboard, scroll it so it's visible // Your application might not need or want this behavior. CGRect aRect = self.view.frame; aRect.size.height -= kbSize.height; if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) { CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height); [scrollView setContentOffset:scrollPoint animated:YES]; } }
-
thenetimp over 12 yearsI did add the observers, as I mentioned I can see the function is called when the keyboard shows, so I do know that the observer is working. Thanks though always good to double check things,
-
Groot about 11 years+1 Easy as hell to implement and really good. I suggest combining it with the BSKeyboardControl to add navigation control in the textfields: cocoacontrols.com/controls/bskeyboardcontrols
-
Cameron Lowell Palmer over 10 yearsYou need to update this post. viewDidUnload is no longer called.
-
Maniganda saravanan about 10 years@Reuven When using TPKeyboardAvoidingScrollview, Sometimes if we copy and paste in textview the view entirely goes up,.. is there any solution for that?..
-
fatuhoku almost 10 yearsDoes it work with
UIPresentationModeFormSheet
though?