objective-c - 限制多个 UITextField 的长度

标签 objective-c cocoa-touch ios uitextfield uitextfielddelegate

我有四个 UITextField,我想限制每个的长度,但它们的长度都不一样。到目前为止,我有以下代码,但它不能正常工作

define MAXLENGTH 5
define MAXQTY 3
define MAXSIZE 4
define MAXBRAND 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    int lengtha = [brand.text length] ;
    NSLog(@"lenghta = %d",lengtha);
    if (lengtha >= MAXBRAND && ![string isEqualToString:@""]) {
    brand.text = [brand.text substringToIndex:MAXBRAND];
        return NO;
    }
    return YES;

    int lengthb = [qty.text length] ;
    NSLog(@"lenghtb = %d",lengtha);
    if (lengthb >= MAXQTY && ![string isEqualToString:@""]) {
        qty.text = [qty.text substringToIndex:MAXQTY];
        return NO;
    }
    return YES;

    int lengthc = [size.text length] ;
    NSLog(@"lenghtc = %d",lengtha);
    if (lengthc >= MAXSIZE && ![string isEqualToString:@""]) {
        size.text = [size.text substringToIndex:MAXSIZE];
        return NO;
    }
    return YES;

    int lengthd = [price.text length] ;
    NSLog(@"lenghtd = %d",lengtha);
    if (lengthd >= MAXLENGTH && ![string isEqualToString:@""]) {
        price.text = [price.text substringToIndex:MAXLENGTH];
        return NO;
    }
    return YES;
}

最佳答案

如果品牌、数量、尺寸和价格是实例变量(或属性)并连接到您的 UITextFields,您可以试试这个:

define MAXLENGTH 5
define MAXQTY 3
define MAXSIZE 4
define MAXBRAND 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (textField == brand) {
        int lengtha = [brand.text length];
        NSLog(@"lenghta = %d",lengtha);
        if (lengtha >= MAXBRAND && ![string isEqualToString:@""]) {
            brand.text = [brand.text substringToIndex:MAXBRAND];
            return NO;
        }
        return YES;
    } else if (textField == qty) {
        int lengthb = [qty.text length];
        NSLog(@"lenghtb = %d",lengthb);
        if (lengthb >= MAXQTY && ![string isEqualToString:@""]) {
            qty.text = [qty.text substringToIndex:MAXQTY];
            return NO;
        }
        return YES;
    } else if (textField == size) {
        int lengthc = [size.text length];
        NSLog(@"lenghtc = %d",lengthc);
        if (lengthc >= MAXSIZE && ![string isEqualToString:@""]) {
            size.text = [size.text substringToIndex:MAXSIZE];
            return NO;
        }
        return YES;
    } else if (textField == price) {
        int lengthd = [price.text length];
        NSLog(@"lenghtd = %d",lengthd);
        if (lengthd >= MAXLENGTH && ![string isEqualToString:@""]) {
            price.text = [price.text substringToIndex:MAXLENGTH];
            return NO;
        }
        return YES;
    }
    return YES;
}

关于objective-c - 限制多个 UITextField 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170820/

相关文章:

objective-c - UINavigationController 用于 UITabbarController 内部的表格

ios - 调用 UICollectionView.reloadData() 是不好的做法吗?如果是这样,为什么?

objective-c - 如何获得 UIBarButtonItem 的框架?

ios - 在 SplitViewController 中从 DetailViewController 隐藏 MasterViewController

ios - iOS 上的 GMail 应用程序使用什么来编辑 HTML 电子邮件?

android - React native gradlew assembleRelease 构建失败。任务 ':app:mergeReleaseResources' 执行失败

iOS - @available 在这里不保护可用性;使用 if (@available) 代替

objective-c - NSColor Set - 它有什么作用?

ios - 如何创建类似 UITableView 结构的树?

ios - 检测 iPhone 在平面上的移动