您的位置:首页 > 产品设计 > UI/UE

iOS UITextField输入字数提示以及判断输入字体类型

2015-12-30 11:17 676 查看
1.创建UITeextField并设置delegateUITextFieldDelegate
editText = [[UITextField alloc] initWithFrame:CGRectMake(20, 40, ScreenSize.width-40, 40)];
editText.backgroundColor = [UIColor whiteColor];
editText.clearButtonMode = UITextFieldViewModeWhileEditing;
editText.delegate=self;
editText.font = FONT(14);
editText.textColor = COLOR(188, 191, 196);
editText.leftView = leftView;
editText.leftViewMode = UITextFieldViewModeAlways;
[editText addTarget:self action:@selector(limitLength:) forControlEvents:UIControlEventEditingChanged];
2.执行方法

-(void)limitLength:(UITextField *)sender
{
bool isChinese;//判断当前输入法是否是中文
if ([[editText.textInputMode primaryLanguage] isEqualToString: @"en-US"]) {
isChinese = false;
}
else
{
isChinese = true;
}

if(sender == editText) {
// 8位
NSString *str = [[editText text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
if (isChinese) { //中文输入法下
UITextRange *selectedRange = [editText markedTextRange];
//获取高亮部分
UITextPosition *position = [editText positionFromPosition:selectedRange.start offset:0];

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

if (str.length < 16) {

numLa.text = [NSString stringWithFormat:@"%lu", 15 - (unsigned long)str.length];
}
if ( str.length>=16) {
NSString *strNew = [NSString stringWithString:str];
[editText setText:[strNew substringToIndex:15]];
}
}
else
{
NSLog(@"输入的英文还没有转化为汉字的状态");

}
}else{
// NSLog(@"str=%@;
本次长度=%lu",str,(unsigned long)[str length]);

if (str.length < 16) {

numLa.text = [NSString stringWithFormat:@"%lu", 15 - (unsigned long)str.length];
}
if ( str.length>=16) {
NSString *strNew = [NSString stringWithString:str];
[editText setText:[strNew substringToIndex:15]];
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: