我有一个文本字段,用户在其中输入数据.这是一个电话号码字段.如果用户输入1234567890,我希望在用户输入时显示为(123)-(456)-7890.这怎么可能?

推荐答案

这对你有帮助

格式(xxx)xxx xxxx

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    int length = (int)[self getLength:textField.text];
    //NSLog(@"Length  =  %d ",length);

    if(length == 10)
    {
        if(range.length == 0)
            return NO;
    }

    if(length == 3)
    {
        NSString *num = [self formatNumber:textField.text];
        textField.text = [NSString stringWithFormat:@"(%@) ",num];

        if(range.length > 0)
            textField.text = [NSString stringWithFormat:@"%@",[num substringToIndex:3]];
    }
    else if(length == 6)
    {
        NSString *num = [self formatNumber:textField.text];
        //NSLog(@"%@",[num  substringToIndex:3]);
        //NSLog(@"%@",[num substringFromIndex:3]);
        textField.text = [NSString stringWithFormat:@"(%@) %@-",[num  substringToIndex:3],[num substringFromIndex:3]];

        if(range.length > 0)
            textField.text = [NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]];
    }

    return YES;
}

- (NSString *)formatNumber:(NSString *)mobileNumber
{
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""];

    NSLog(@"%@", mobileNumber);

    int length = (int)[mobileNumber length];
    if(length > 10)
    {
        mobileNumber = [mobileNumber substringFromIndex: length-10];
        NSLog(@"%@", mobileNumber);

    }

    return mobileNumber;
}

- (int)getLength:(NSString *)mobileNumber
{
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""];

    int length = (int)[mobileNumber length];

    return length;
}

Objective-c相关问答推荐

将未知数量的行添加到静态单元UITableView

如何将 NSDate 转换为今天、昨天、一周前、一个月前、一年前等相对格式?

从 NSString 创建 SHA1 哈希

额外的 75 秒从何而来?

如何以编程方式退出 mac 应用程序?

在 Xcode 中打破 EXC_BAD_ACCESS?

如何测试生产推送通知?

未找到 Apple Mach-O 链接器警告目录

iOS 5 不允许将下载的数据存储在 Documents 目录中?

具有多个嵌入 segues 的 ContainerView

UIWebView didFinishLoading 多次触发

何时在 iPhone 上使用 UIView 与 UIViewController?

如何像在 Spotify 的播放器中一样创建居中的 UICollectionView

如何修复UIPopoverController 已弃用警告?

在 Objective-C 中计算两个日期之间的天数

如何在 Cocoa 中获取当前日期

如何判断 WkWebView 是否在 Objective-C 中完成加载?

@package 指令在 Objective-C 中的作用是什么?

info.plist 中的Application Requires iPhone Environment键是什么意思?

将 Xcode 组创建为文件系统文件夹的工作流程