UITextField相信很多的iOS开发者都会经常用到,在编码的时候疏忽了,偶然间被测试提到一个bug,就是在拼音转态下输入的时候,会对字数的判断出现问题。
之前的代码
#pragma mark --- textfield的输入监听方法
- (void)textFieldChanged:(UITextField*)textField{
if (textField.text.length>15) {
textField.text=[textField.text substringToIndex:15];
[SVProgressHUD showErrorWithStatus:@"小组名字最多15个字"];
}
[self updateCreateBtnStatus];
}
修改前.gif
选中转态的字母都被计算了,其实并不是我们所需要的。
修改后
#pragma mark --- textfield的输入监听方法
- (void)textFieldChanged:(UITextField*)textField{
UITextRange *rang = textField.markedTextRange; // 获取非=选中状态文字范围
if (rang == nil) { // 没有非选中状态文字.就是确定的文字输入
if (textField.text.length>15) {
textField.text=[textField.text substringToIndex:15];
[SVProgressHUD showErrorWithStatus:@"小组名字最多15个字"];
}
[self updateCreateBtnStatus];
}
}
修改后.gif
选中转态的时候没有参与计算,确定选择之后才被记录计算。