您的位置:首页 > 其它

2016-01-07 textview 字数限制

2016-01-07 13:18 274 查看
字母数字 限制字数 delegate

//控制输入文字的长度和内容,可通调用以下代理方法实现

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

{

if (range.location>=20)

{

//控制输入文本的长度

UIAlertView *alve = [[UIAlertView alloc]initWithTitle:@"提示" message:@"输入内容最多20字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

[alve show];

return NO;

}

if ([text isEqualToString:@"\n"]) {

//禁止输入换行

[textView resignFirstResponder];

return NO;

}

else

{

return YES;

}

}

3.汉字的

#define MaxNumberOfDescriptionChars 20

viewdidload 中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewEditChanged:) name:UITextViewTextDidChangeNotification object:_descrViewa];

- (void)dealloc

{

[[NSNotificationCenter defaultCenter] removeObserver:self];

[[NSNotificationCenter defaultCenter]removeObserver:self

name:@"UITextViewTextDidChangeNotification"

object:_descrViewa];

}

// 监听文本改变

-(void)textViewEditChanged:(NSNotification *)obj{

UITextView *textView = (UITextView *)obj.object;

NSString *toBeString = textView.text;

NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式

if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写

UITextRange *selectedRange = [textView markedTextRange];

//获取高亮部分

UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];

// 没有高亮选择的字,则对已输入的文字进行字数统计和限制

if (!position) {

if (toBeString.length > MaxNumberOfDescriptionChars) {

textView.text = [toBeString substringToIndex:MaxNumberOfDescriptionChars];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20个字!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

[alert show];

}

}

// 有高亮选择的字符串,则暂不对文字进行统计和限制

else{

}

}

// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

else{

if (toBeString.length > MaxNumberOfDescriptionChars) {

textView.text = [toBeString substringToIndex:MaxNumberOfDescriptionChars];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20个字!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

[alert show];

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: