iPhone Keyboard Adjust In View - iphone

I've been searching, but haven't quite found a complete answer, and the Apple docs aren't much help.
I have an application with a UIView that has a lot of text fields on it, ranging from the top of the view to the bottom. When the user clicks the first UITextField the keyboard pops up. The keyboard has three buttons above it, previous, next, and done on a toolbar InputAccessoryView.
Basically, let's say there are 6 UITextField boxes that space from the top of the view to the bottom. When the user gets past the third text field, the keyboard blocks the bottom three. How do I have the view adjust up when putting text in the bottom three text fields?

You need to place your textfields into a UIScrollView, and either translate the view above the keyboard when it is active and away when it is down, or another solution such as always having the keyboard up on that page, which'll save you the setFrame calls on your UIView/UIScrollView depending on what the keyboard is doing.
This will further help:
How to adjust the view position when the keyboard opens in iPhone?

Related

Swift iOS Scrolling View When Keyboard Is Visible

In my view I have two text fields and one text view. The text fields aren't hidden by the keyboard but the text view is. No problem. I can scroll it. The issue I'm having is that if the keyboard is already visible the keyboardWillBeShown event doesn't occur. My text view is visible enough to be tapped on when the keyboard is up but I want the entire field to scroll into view. Since keyboardWillBeShown won't fire (since the keyboard is already shown) how can I scroll the field?
I figured it out. Just had to add the scrolling code to the begin editing event.

UIView container to autoscroll on keyboard resize

I have a UIViewController, it's a view (UIView) containing two elements - UIPageControl and also a UIScrollView. Now, when using normal keyboard, the view is a perfect fit, sharing the screen with the keyboard. But when an international keyword is used, the keyboard would add an extra ribbon for showing the international characters. When that's happened, the view would be covered by the extra keyboard ribbon. The view can't be resized as the UIScrollView view contains a table of two rows of fixed size. So now I am wondering if I should find a way to allow the UIView container to up shift to accommodate the ribbon and shift back when the ribbon disappears. Or is there any other better solutions to work around the issue?
Check out my answer to this stackoverflow post here: detect the appear and disappear of international keyboard
Basically, you'll want to sign up to receive notifications about when the keyboard is shown. From there you can get the keyboard frame size and then adjust views in your window to display properly. The tutorials in the post really do a good job explaining how to do this. Check them out! If you still have questions I can try to help you with specifics.

Keyboard accessory view hiding text

I have the following problem: I have a standard UITextView which I resize once the keyboard pops up. I also have another view which I animate into view (not the standard accessory view attached to the keyboard). The problem is that I do not want text to be hidden by this view. This is what happens when I reach the last line (orange view = my custom accessory view):
Ideally, I'd like to have an automatic scroll should that happen. But I have no clue how to achieve this if I am in the last line of the UITextView. Also, scrollToVisible doesn't work in this context and I don't know if I'd get anywhere with contentInset.
Any suggestions would be welcome! Thanks.
EDIT
I suppose I would need some kind of mechanism which would allow to
make the textview only expand to the line right above the accessory view if I was entering something on the LAST LINE
have the textview expand to the keyboard if I was not editing the LINE DIRECTLY ABOVE the KEYBOARD.
Does that make sense? What I need is the opposite of contentInset, I suppose.
I simply don't want to resize the textView to just above the accessory view as it takes away screen space to display text.
I got the solution- sorry, I guess it was obvious, but it took me the whole day to figure it out:
textOfPage.contentInset = UIEdgeInsetsMake(0, 0, 100, 0);
This will offset my UITextView so that the last line is never hidden. The 100 is in pixels and can be adjusted accordingly.
What I would do is resize the textview in the textViewShouldBeginEditing method to fit above the keyboard and the newly added accessory view, and then resize it back to full screen when the keyboard is dismissed in textViewShouldEndEditing

iPhone Dev - I have some textviews inside a scrollview. Can I make it scroll up as I type into them (so I can always see what I'm typing)?

I have an app that has a scrollview with a bunch of different textviews in it (when you click on each one, a keyboard pops up and you can type into the textview). See the following pic:
Here's my problem. If I enter any more text than is entered there in the pic, it goes underneath the keyboard so you can't see what you're typing. Is there any way I can make it so that when you're typing and you get down to that last line the the pic, it will automatically continue to scroll up one line at a time so that it always shows what you're typing (with the most recent line right above the keyboard)?
The best thing to do is to resize the textview when it becomes the first responder and when it resigns as first responder.
Resize the textview to fit within visible area when the keyboard is showing
Resize the textview to it's original size when done is pressed.
Check out this post as well.
How to make a UITextField move up when keyboard is present?

adding a textbox and a button at the top of the keyboard on iphone

I want to add a text box and a button beside it. They will be at the bottom of the window. Then, when I touch the textbox (to type something), keyboard will appear and the whole row (with textbox and button) scrolls up and the keyboard will be right below them. Could you please let me know how can I do that?
Is there any sample program?
Thanks.
Matt Gallagher posted this on his blog:
Sliding UITextFields around to avoid the keyboard
It is a step by step example of exactly what you want.
In the XCode documentation iPhone Application Programming Guide there is a section on "Moving Content That Is Located Under the Keyboard" that talks about receiving keyboard notifications when a keyboard is about to show. There's code there to show you how to get the keyboard size (which varies depending on the orientation). I won't repeat it here.
You can use the same technique to get the UIKeyboardWillShowNotification notification and get the height of where the keyboard will end up. That gives you the bottom edge of where your view needs to go, effectively putting it above the keyboard. So just put your textbox and button inside a view. When you get the notification tell your view where it needs to go (keyboard height + height of the container view) and you're done. You'll also want to catch UIKeyboardWillHideNotification to move the view back to where it was, so keep track of the original container view position.
It's pretty straightforward and it'll look nice, especially if you use a nice UIView animation effect and set the timing just right.