How would you go about mimicing the iPhones keypad input. So that when you click one 1 is displayed then 2 then it is 12… so on and so forth along with the ( ) -. I don’t want to use the actual phone app because I’m creating a false dialer, but I want it to look and function kind of like the actual thing.
Any ideas would be greatly appreciated thanks.
EDIT:
Ok so I put in all the buttons needed but I ended up making them all individual buttons. THey are all linked including the label and this is what one button and the updater looks like.
-(IBAction)zeroButton:(id)sender{
self.enteredPhoneNumberString = [self.enteredPhoneNumberString stringByAppendingString:[NSString stringWithFormat:@"%d", "0"]];
[self updateFormattedPhoneNumberLabel];
}
-(void)updateFormattedPhoneNumberLabel {
if ([self.self.enteredPhoneNumberString length] > 3) {
NSString *firstThree = [self.enteredPhoneNumberString substringToIndex:2];
NSString *lastSet = [self.enteredPhoneNumberString substringFromIndex:2];
self.label.text = [NSString stringWithFormat:@"%@-%@", firstThree, lastSet];
}
else if ([self.self.enteredPhoneNumberString length] > 7) {
NSString *firstThree = [self.enteredPhoneNumberString substringToIndex:2];
NSString *secondThree = [self.enteredPhoneNumberString substringToIndex:2];
NSString *lastSet = [self.enteredPhoneNumberString substringFromIndex:2];
self.label.text = [NSString stringWithFormat:@"(%@) %@-%@", firstThree, secondThree, lastSet];
}
}
I had also tried it with the “” not being around the numbers being appended. Any idea why nothing is being displayed?
NEW EDIT:
I added enteredPhoneNumberString = @””; and with the numbers formatted the way you original had it displays the numbers. The main issue I’m having now is getting it so that the () and – pop up in the right spots.
I would suggest creating a grid of
UIButtons that mimics the numpad, these buttons all call a method such askeyPadButtonTouchedUpInside:(id)senderand have a tag that corresponds to the number it represents.Implementation of
keyPadButtonTouchedUpInside:(id)sendermay look like…Now you need to implement
updateFormattedPhoneNumberLabelThis will look at the instance NSString variable
self.enteredPhoneNumberStringand update a UILabel that you have in place to display the number.updateFormattedPhoneNumberLabelmight look like…Hopefully that gets you down the path, there may be more efficient methods for doing this but in reality its not an intensive operation so I wouldn’t worry to much about optimization unless you see some kind of entry lag which I wouldn’t expect.
EDIT
I would probably update the formatting conditions so that the formatting happens in the following behavior.
1-3 numbers entered shows as “1”, “12”, or “123”
4-7 numbers entered shows as “123-4”, “123-45”, “123-456”, or “123-4567”
8-10 numbers entered show as “(123) 456-78”, “(123) 456-789”, or “(123) 456-7890”
11 numbers entered show as “1+(234)-567-8901”
Anything more than 11 I would just show a string of numbers, unless you want to get into formatting non-us numbers. You should also play around with entering numbers in the Phone App to see how it responds if you want to mimic it completely.