Форматирование номера телефона на iOS - PullRequest
64 голосов
/ 19 мая 2011

У меня есть текстовое поле, в которое пользователь вводит данные.Это поле номера телефона.Если пользователь вводит 1234567890, я хочу, чтобы он отображался как (123)-(456)-7890 в качестве пользовательских типов.Как это возможно?

Ответы [ 23 ]

0 голосов
/ 26 сентября 2014

REFormattedNumberField , вероятно, лучший. Просто укажите желаемый формат.

0 голосов
/ 20 января 2015

Также для формата + x (xxx) xxx-xx-xx вы можете использовать что-то вроде этого простого решения:

+ (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
NSString *decimalString = [components componentsJoinedByString:@""];

if (decimalString.length > 11) {
    return NO;
}

NSMutableString *formattedString = [NSMutableString stringWithString:decimalString];

[formattedString insertString:@"+" atIndex:0];

if (formattedString.length > 2)
    [formattedString insertString:@" (" atIndex:2];

if (formattedString.length > 7)
    [formattedString insertString:@") " atIndex:7];

if (formattedString.length > 12)
    [formattedString insertString:@"-" atIndex:12];

if (formattedString.length > 15)
    [formattedString insertString:@"-" atIndex:15];


textField.text = formattedString;
return NO;}      
0 голосов
/ 06 июля 2011
NSString *str=@"[+]+91[0-9]{10}";
NSPredicate *no=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",str];
if([no evaluateWithObject:txtMobileno.text]==NO
{ 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Warning" message:@"Please Enter correct contact no." delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];

    [alert show];
    [alert release];    
}
...