Detect what's being inputed in a UITextField - iphone

I have a UITable View with a textfield that is editable right on the view (like Phone in contacts, etc.). I want to enable/disable my save button conditional up text being present in this field. So, I want the button to start out as disabled (for a new record) and then, as soon as I type the first letter into my text field, I want the button enabled. If I delete again back to zero, I would like the button disabled. You get the point.
Now, for doing this I need some way to detect the text being inputed while the user writes it (and when he finishes editing).
Does anybody know how to do this?
Thanks a lot. Still noob...

Try this: (from the Apple documentation for UITextInputTraits)
enablesReturnKeyAutomatically
A Boolean value indicating whether the return key is automatically enabled when text is entered by the user.
#property(nonatomic) BOOL enablesReturnKeyAutomatically
Discussion
The default value for this property is NO. If you set it to YES, the keyboard disables the return key when the text entry area contains no text. As soon as the user enters any text, the return key is automatically enabled.

Have your view controller adopt the UITextFieldDelegate protocol, and then implement a couple of the protocol's methods:
– textFieldDidBeginEditing:
– textFieldDidEndEditing:
Also, be sure to set the text field's delegate property to point to your view controller. The text field will then automatically send these messages to the controller when editing session begins and ends.

Related

Restrict the TAB key on accessory keyboards

I have a UIScrollView with 2 views, side by side, each of which covers the entire screen.
They are moved to visible bounds on user's action, only one covering the screen at a time. Both of these views have multiple UITextFields. Working with the simulator, I fill in a textField in the first view and when I press the Tab key, the firstResponder is assigned to a textField in the other view. I understand that on using the device, the user will not be able to do that. But what if the user uses a bluetooth keyboard, or similar accessory? I do not want a textField, that is currently not visible to become firstResponder. Can this be done?
EDIT: I just remembered the canBecomeFirstResponder method. But how do I determine which textField is about to becomeFirstResponder?
It sounds like the problem isn't that they shouldn't be able to tab between the two text fields, but instead that they shouldn't be able to edit a text field that isn't visible, and they should be able to tab between them if they are both visible at the same time.
Instead of restricting tab, I would implement the UITextField delegate method -textFieldShouldBeginEditing:, which allows you to return a boolean whether or not that text field should become the first responder.
Something such as:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
// Only edit if the text field is visible
return !textField.isHidden;
}
You may need to adjust this code to fit your 'is visible' status of the text field.

How to set the popup keyboard to only show certain keys?

How do you set the popup keyboard to only show certain keys when you type into a textfield? I know there are default keyboards but none seems suitable. Is there an alternative input option? Thanks.
Since iOS 3.2, you can change the keyboard :
cf.
Official documentation here
Discussion
The value of this property is nil.
Responder objects that require a
custom view to gather input from the
user should redeclare this property as
readwrite and use it to manage their
custom input view. When the receiver
subsequently becomes the first
responder, the responder
infrastructure presents the specified
input view automatically. Similarly,
when the view resigns its first
responder status, the responder
infrastructure automatically dismisses
the specified view.
This property is typically used to
replace the system-supplied keyboard
that is presented for UITextField and
UITextView objects.
Apple wont allow you to do any alterations to the keyboards..
What do you want to enter? Either create a custom keyboard, use pickers if possible or code it to not accepts certain keys..
Okay. I did'nt know you were allowed to change the keyboard now..
I usually use a picker. and have one of the segments just contain a "," the rest of the segments are 0-9..
or you could do something like this:
What is the best way to enter numeric values with decimal points?
But since its okay to change the keyboard now try this:
http://blog.devedup.com/index.php/2010/03/13/iphone-number-pad-with-a-decimal-point/

Reset UITextField's original placeholder text

I'm adding some user feedback mechanism into my app. The user types some comments into a text field and when that editing is done it updates a UITextView. Then when the user hits the submit button and moves on in the app the user may have need to send more feedback from the same form for a different item. I can reset the other fields and labels in the app to their default values when I hide the view, but not the textField (?). How can I reestablish the placeholder text next time the user accesses this view?
Your suggestions are humbly appreciated.
EDIT:
Thanks to Dwaine. Apparently I had the [textField setText:nil]; in the wrong place. Placing it in my textFieldDidEndEditing worked fine. Also, I was using the Did End on Exit rather than Editing Did End in Interface Builder which screwed things up.
In either the ViewWillAppear or ViewDidAppear (I'd suggest ViewWillAppear) function, set the text value of the UITextField to...nil I think...or just an empty string...
That should make the Placeholder Text show up again I think ^^

iPhone Keyboard key value return

I would like to know if a method like touchesBegan for touches Event exists for the iPhone keyboard. I mean just how to know when I press a key, which value is it. (Don't display it on UITextfield or UILabel but display it with an NSLog for example).
Is there any way?
You want the UITextFieldDelegate Protocol method:
– textField:shouldChangeCharactersInRange:replacementString:
The keyboard sends this every time a key is pressed so you can decide if you want to display the character associated with the key or perform some other action.
Accessing the keyboard view direct is strictly undocumented, so don't think of applying it to any AppStore apps.
However, you can make an off-screen text field, and use it to capture keyboard input.

UItextfield auto labelling

i'm having one text field, normally when touch the text field, keyboard will appear, is it any possibilities where when text field is touch one drop down list will appear to recommend value to be enter and value is selected it will appear in texr field
thanks
There's no automatic way of doing it but it is possible.
You would use the textFieldDidBeginEditing: delegate method of the UITextField to display a UIPickerView to your view. (You could also use textFieldShouldBeginEditing: depending on what you wanted to do.) When a user selected an item in the picker, you would add code to copy the appropriate text to the text field and, presumably, hide or delete the picker. You'd also need to hide or delete the picker when the text field lost focus.