I Want to enter amount in a textField i kept a place holder 0.00
If i enter a value the value should come to the left side of the decimal point and the 00 should stay still.
How?
You should use one of the following methods
– textViewShouldBeginEditing:
– textViewDidBeginEditing:
– textViewShouldEndEditing:
– textViewDidEndEditing:
for appending 00 after the entered number.
I take it the .00 always stays .00, so you cannot change the value after the decimal point?
Then you should implement the text field delegate
-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
This is called any time a user enters a character, so you can easily use it to change the displayed text in the textfield to show the entered number formatted with
textField.text =[NSString stringWithFormat:#"%d.00", intNumberEnteredUpToNow];
Of course you should test the entered character (it could be a backspace or a letter, depending on the keyboard you are showing), and put the parts before the decimal point that are currently shown into the intNumberEnteredUpToNow value.
Related
I have 3 textfields, which can hold at most one character. If a character is entered in first textfield, then the focus should automatically shift to the second and so on.
For this, I used textField:shouldChangeCharactersInRange:replacementString:
Going by this, I could check the length of my textfield and assign first responder status to the next textfield.
When i type a character in the first textfield, the character is displayed in the textfield, but the focus doesn't automatically shift to the next textfield. It shifts only when I enter the next alphabet, where it tries to check the condition, and thereby it fails, and then only the focus shifts to the next textfield.
IS there anyway where, the focus should be shifted to the second, just after the first character is entered.
Try checking the length of the replacementString parameter instead of that of the textfield
Call
- (BOOL)becomeFirstResponder
on it. You can check that it can become first responder with the method
- (BOOL)canBecomeFirstResponder
I have a UITextField which I created programmatically. This text field is used to input a time. The placeholder text is "00:00:00.000". When the text field is tapped, a number pad will appear. Ideally, I want the gray place holder text to remain as the user types. As they enter a number, it replaces the gray zeros in the place holder text and skips over the colons and period (leaving the format intact without the user entering any punctuation). If it is not possible to keep the place holder text and replace it as the user types, I would like the punctuation to automatically be entered.
Thanks in advance!
iOS has a UIDatePicker control for this, if you want to go the way you are going then you will have handle all the user input your self.
I've got a textfield, which is using a numberpad for input, and I'd like to make it so that when the user types in a number, the textfield automatically inserts an ' (apostrophe) after the first digit, and any other numbers would follow the apostrophe. But to make this noticeable, I'd like to have the apostrophe 'pop up' with a change of color, before resting in the textfield. Much like the action of the keyboard letters when they're hit - they pop out for a second.
Seems to me there's several things to be done and I haven't found any help online with them:
Get notice after one digit is entered (more than one digit could be entered, but the animation would take place and the additional numbers would show up after the apostrophe).
Add the apostrophe into the textfield.
Animate the insertion of the apostrophe, while allowing the textfield to continually take in input.
Any direction to libraries or code or suggestions would be immensely appreciated. Thank you so much. I've a hunch I'm supposed to use coco2d but have no idea how to get started.
I figured out a work around that I'd thought I'd share in case anyone is interested. For monitoring input, you can use:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
which gets called when the user touches the keyboard, but before the character or number is processed and put to screen. The only problem is that on an empty text field, if the user hits backspace this method doesn't get called (even if not null). Basically because there's no change to an empty text field to process with an empty string.
You could also use: UITextFieldTextDidChangeNotification, but it gets called in the same way and doesn't offer any parameters to play with.
For 2: I ended up making labels for these and putting them over the text field where I wanted, and playing with their properties as needed. It was kind of messy so I actually split the text field into 2 and used the above method to jump in between. Seems to work mostly well, but dealing with the backspace issue is still unsolved (how to move back to the first text field when backspacing through text for example). Am considering overlaying a transparent button on that part of the keyboard. Seems messy though. I would appreciate any cleaner ideas that are out there.
So, didn't end up doing any animations, which would have been a much slicker. Hope this helps.
hello all i am working with multiple uitextfields.i have a problem in cursor placing while changing firstResponder. i would like to do "Cursor placement in 2nd field once we entered the 3rd character in the 1st field." but the cursor stays in 3rd place.here i am restricting my first text field length to 3.
This SO answer should help you. You set up notifications to be issued when the first text field state changes, firing a method that checks the text field's length. If firstTextField.text.length is equal to three characters, call [secondTextField becomeFirstResponder].
I have a text field that is always of the format "XX0000000XX", X being a letter, 0 being a number. I switch keyboards as the user is typing depending on whether they need to enter a number or letter.
This works fine, until the user positions the cursor in the middle of the text field to make an edit. How do I determine the cursor position within a UITextField?
I know a UITextView has a selectedRange that can be used, but I've read that you can't force a UITextView to be single line entry? i.e. Disable multiple lines of text.
Clever bit with the keyboards. My immediate thought is that perhaps that you shouldn't allow the user to move the cursor in the first place.
This isn't without precedent in the iPhone UI. The telephone keypad view, for example, restricts the user to sequential input. I have also found this technique useful for currency input. Anywhere with input that has a very rigid syntax, basically, seems like a candidate for this kind of treatment. Might work well for your situation.
Not sure if this is the best method, but here's how I do it:
A UITextField to capture input and a UILabel to display the input. The text field is hidden but is sent becomeFirstResponder to trigger the keyboard. As the user types, delegate methods do their thing to format the text, if necessary (as with currency), and update the UILabel, which provides the user feedback on their input.
Depending upon the situation, you may wish to style the UILabel in such a way that makes it clear the user can't use it as they would a selectable text field while reassuring them that it is, in fact, their input.
With 11 characters in play, I can see how curser editing might be useful. Still, phone numbers are often in that same range and I never have a problem with the sequential editor in the Phone app.
There's a UITextDelegate method -textField:shouldChangeCharactersInRange:replacementString: which should be all you need to do what you describe. Implement it to enforce whatever formatting rules you want. You shouldn't care where the cursor is, just the range of the change that's proposed.