iOS - TextField的一些输入限制

史超英
2023-12-01

iOS - TextField的一些输入限制


TextField限制输入类型和字节数

#import "ViewController.h"

#define NUMBERS @"0123456789\n" // 定义宏
#define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

@interface ViewController ()<UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *testField; // stroyboard拖一个textfield

@end
- (void)viewDidLoad {
    [super viewDidLoad];
    // 设置代理
    self.testField.delegate = self;
}
//string就是此时输入的那个字符textField就是此时正在输入的那个输入框, 返回YES可以改变输入框的值, NO不可以改变输入框的值
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *cs;
    //判断是否时我们想要限定的那个输入框
    if(textField == self.testField)
    {
        // 改变宏,判断输入的类型
        cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
        //按cs分离出数组,数组按@""分离出字符串
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
        BOOL basicTest = [string isEqualToString:filtered];
        if(!basicTest)// 如果输入的不是数字
        {
            NSLog(@"error");
            return NO;
        }
    }

    //得到输入框的内容
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if ([toBeString length] > 5) { //如果输入框内容大于5则禁止输入
        NSLog(@"超过最大数量");
        return NO;
    }

    //其他的类型不需要检测,直接写入
    return YES;
}

参考文档:
1.http://zhidao.baidu.com/link?url=Xjx4yHKOqsY1mLsyZV7mqRmTL7wlgMOz4Wi4z9yUkOKd6dM6IO_4hApuReJ2hvvk–GiMm6RK-iJf2Nx083AbE-RyGXy5yIMGpvPTwL_fYC
2.http://outofmemory.cn/code-snippet/7281/ios-textField-limited-zhineng-out-yiding-length-charaeter
3.http://zhidao.baidu.com/link?url=xM1zXHpMG-ijQ32-z8l8GEJU663J9QYE2yyML1GwiEDZy8RtkXj6z_96xxBZIMRSNxR6VlOgtOmYXfimTfrfJpX-HNAhA8Bie5zxUEoHKby

 类似资料: