代码改变世界

UITextField 限制输入长度

2018-11-28 11:56  法子  阅读(218)  评论(0编辑  收藏  举报
static int MaxLength = 16;

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.myTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}

//因为有markedText的时候没处理,所以在传textfiled.text的值时要再次截一下。比如注册用户名里正输入了一半的拼音,没点键盘的"选定",就点了注册按钮。
//NSString * account = _myTextField.text.length > MaxLength ? [_myTextField.text substringToIndex:MAXLenght] : _myTextField.text;

- (void)textFieldDidChange:(UITextField *)textField{
    //中文拼音输入法,即textField.textInputMode.primaryLanguage为:zh-Hans(简体)、zh-Hant(繁体)的时候,输入还是拼音的时候就return;
     //输入英文如果有选中效果的占位字母就return
    if (textField.markedTextRange != nil) {
        return;
    }
    NSString *tempString = textField.text;
    //  去掉首尾的空格和回车
    //   tempString = [tempString stringByTrimmingCharactersInSet:NSCharacterSet.whitespaceAndNewlineCharacterSet];
    if (tempString.length > MaxLength) {
        tempString = [tempString substringToIndex:MaxLength];
    }
    textField.text = tempString;
}

- (void)dealloc {
    [NSNotificationCenter.defaultCenter removeObserver:self];
}