UITextField和UITextView输入限制解决方案

来源:互联网 发布:域名纠纷 律师 编辑:程序博客网 时间:2024/05/21 04:40
 //初始化UITextField对象    _inputTextFiled = [[UITextField alloc] initWithFrame:CGRectMake(0, 160, 320, 40)];    _inputTextFiled.delegate = self;    _inputTextFiled.borderStyle = UITextBorderStyleLine;//    [_inputTextFiled addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; //也可以使用这个监听    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:nil];    //修改placeHold颜色    _inputTextFiled.attributedPlaceholder = [[NSMutableAttributedString alloc] initWithString:@"placleHold" attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];    _inputTextFiled.clearButtonMode = UITextFieldViewModeWhileEditing;    [self.view addSubview:_inputTextFiled];


#pragma mark-UITextFiledDelegate//监听限制是否允许继续输入- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (textField == _inputTextFiled) {        if (string.length == 0) return YES;        //range是当前要被替换输入的区域 string是当前要被替换输入区域的文本        NSInteger allTextLenth = textField.text.length;   //所有文本长度        NSInteger selectedLength = range.length;           //要输入区域包括联想出来的长度        NSInteger replaceLength = string.length;           //输入的长度        if (allTextLenth - selectedLength + replaceLength > 20) {  //这里是控制联想出来的超过就不让输入            return NO;        }            }    return YES;}

//监听输入有变化- (void)textFieldDidChange:(UITextField *)textField{    if (textField == _inputTextFiled) {        if (textField.text.length > 20) {            textField.text = [textField.text substringToIndex:20];        }            }}

 //初始化UITextView    _inputTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 160, 320, 30)];    _inputTextView.delegate = self;    _inputTextView.backgroundColor = [UIColor purpleColor];    [self.view addSubview:_inputTextView];

#pragma mark-UITextViewDelegate//是否发生变化- (void)textViewDidChange:(UITextView *)textView{    if (textView.markedTextRange == nil && _inputTextView.text.length > 10) {        textView.text = [textView.text substringToIndex:10];    }}//是否允许输入- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{    if (textView == _inputTextView) {        if (textView.text.length >= 10 && text.length > range.length) {            return NO;        }    }    return YES;}

参考:点击打开链接

0 0
原创粉丝点击