PDA

View Full Version : iPhone Keyboard, how to make Return key work?




fenrus110
Mar 28, 2008, 06:16 PM
I'm using a UITextField and I am guessing that I need to use UITextFieldDelegate somehow to make the Return key actually do something. (like exit the keyboard mode)

I looked at:
HelloWorldClassic, but the Return key doesn't do anything.
UIShowCase, but it's just full of subclass upon subclass confusion.
SQLLiteBooks, but again, full of subclass confusion.

I'm a XCode newb, so can anyone explain or provide a quick and dirty example of how to make the keyboard work as intended?



AndyQ
Mar 29, 2008, 03:17 AM
What I did was the following:

When setting up the textfield, add an extra line that looks like:
myTextField.returnKeyType = UIReturnKeyDone;

You may also need the following line:
myTextField.delegate = self;

Then you need to add a function:

// this helps dismiss the keyboard then the "done" button is clicked
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}

That works for me.

benlangdon
Mar 29, 2008, 03:36 AM
ugh this just makes me want to go in the fetal position because of this program i need to write that is due monday and have put off for 3 weeks :(

fenrus110
Mar 29, 2008, 04:56 PM
@AndyQ

Okay I see that. Now just one step further, what if I have two UITextField's? ie. username/password.

Will the textFieldShouldReturnUITextField function be now listening to both UITextField's? Shouldn't they be separated?

AndyQ
Mar 30, 2008, 02:47 AM
Do you want the same behaviour on both text fields?

If so, you don't need to do anything else otherwise in the textFieldShouldReturn method just see which field the textField points to and handle accordingly

e.g.
if ( textField == usernameField )
{
..
}

fenrus110
Mar 30, 2008, 08:42 PM
Do you want the same behaviour on both text fields?

If so, you don't need to do anything else otherwise in the textFieldShouldReturn method just see which field the textField points to and handle accordingly

e.g.
if ( textField == usernameField )
{
..
}

hmm... massive if/else statements, seems like a similar event mechanism used in Java... (which I hate)

DaveGee
Mar 30, 2008, 09:50 PM
hmm... massive if/else statements, seems like a similar event mechanism used in Java... (which I hate)

So your writing a program where the enter key when used in the 1st text box on the screen will perform one way and in the text input box directly below it the enter key will behave in an entirely different manner?

D

Monkaaay
Mar 31, 2008, 08:35 AM
ugh this just makes me want to go in the fetal position because of this program i need to write that is due monday and have put off for 3 weeks :(

Always a bad idea. :)

jdhouse4
Apr 4, 2008, 03:43 AM
I'm running into the same problem. In "normal" IB, the NSTextField responder chain can be easily set through "nextKeyView". But not in IB for iPhone Touch app interfaces. Sad...:(

You can see a screenshot of my sample app at Cocoacoderblog.com.:apple:

Here's what I want for events. First, upon touching UITextField nameField, a keyboard should come up that has not only "Next" for its return key, but maybe even "Return" instead but with "Previous" and "Next" on the navigation bar of the keyboard, much as one gets when using the iPhone's Safari in a multi-field setting.

When I hit "Next", the focus goes from the first UITextField nameField to UITextField ageField. Upon completing the age, touch the "Return" key and the action should occur.

I've tried calling the UITextField delegate textFieldShouldReturn to get this to work, but need to include something...just not sure what.

jdhouse4
Apr 9, 2008, 01:01 AM
Ok, where did everyone go?