我在iOS中有以下代理方法的实现:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.tag == 2){
if(textField.text.length > 2) {
return NO;
}
return YES;
}
else if (textField.tag == 3) {
if(textField.text.length > 1) {
return NO;
}
}
代码对用户进行必要的限制,直到他们可以输入的字符数。但是,文本字段也不允许用户在输入文本后对其进行编辑。它不允许任何击键(包括删除/退格键)。有没有办法纠正这个问题以维持文本长度限制,但是允许用户编辑这个值?
答案 0 :(得分:1)
你的支票都错了。您不想检查当前文本的长度,您想要检查允许更改时文本的长度。
试试这个:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (textField.tag == 2) {
return newText.length <= 2; // only allow 2 or less characters
} else if (textField.tag == 3) {
return newText.length <= 1; // only allow 1 or less characters
} else {
return YES;
}
}
答案 1 :(得分:0)
使用下面的代码
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger newLength = [textField.text length] + [string length] - range.length;
if (textField.tag == 2)
{
if (newLength>2) {
// [textField resignFirstResponder];
return NO;
}
else {
return YES;
}
}
else if (textField.tag == 3)
{
if (newLength>1) {
// [textField resignFirstResponder];
return NO;
}
else {
return YES;
}
}
}
试试这个你会成功的
答案 2 :(得分:0)
我使用userInteractionEnabled
UITextField
属性启用和禁用编辑功能。不确定你是否在寻找它。
if () // Editable
{
textField.userInteractionEnabled = YES;
}
else // Non Editable
{
textField.userInteractionEnabled = NO;
}