我正在实现以下方法来保存文本字段的数据,以防更改为_detailsDictionary
,但是当它保存时,在textfield.text中输入的最后一个字母不会出现,例如,如果我是保存Krish
,然后只保存kris
。如何解决这些问题?
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSInteger field = textField.tag;
if(field ==1)
{
if(textField.text ==[_detailsDictionary valueForKey:@"FName"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"FName"];
}
return YES;
}
if(field ==2)
{
if(textField.text ==[_detailsDictionary valueForKey:@"MName"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"MName"];
}
return YES;
}
if(field ==3)
{
if(textField.text ==[_detailsDictionary valueForKey:@"LName"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"LName"];
}
return YES;
}
if(field ==4)
{
if(textField.text ==[_detailsDictionary valueForKey:@"City"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"City"];
}
return YES;
}
if(field ==5)
{
if(textField.text ==[_detailsDictionary valueForKey:@"State"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"State"];
}
return YES;
}
if(field ==6)
{
if(textField.text ==[_detailsDictionary valueForKey:@"Country"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"Country"];
}
return YES;
}
if(field ==7)
{
if(textField.text ==[_detailsDictionary valueForKey:@"DOB"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"DOB"];
}
return YES;
}
return NO;
}
答案 0 :(得分:1)
已知-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
函数用于在写入的字符附加到实际字符串之前对textfield
进行更改。
因此,当您尝试从此函数中的textfield
获取文本时,最后一个字符尚未添加到字符串中。
因此,不要使用此功能,请使用此- (void)textFieldDidEndEditing:(UITextField *)textField
答案 1 :(得分:1)
在shouldChangeCharactersInRange
方法中,您无法获得textfield.text
的全文,因为在文本实际输入textfield
之前调用此方法
您需要使用
NSString *strText = [textField.text stringByReplacingCharactersInRange:range withString:string];
此处strText
您将获得fullText
答案 2 :(得分:0)
我在这里使用rajat的答案,但没有更多细节。 首先,你需要全文:
NSString *strText = [textField.text stringByReplacingCharactersInRange:range withString:string];
然后您必须将strText
添加到词典而不是textField.text
答案 3 :(得分:0)
如果要将数据存储在shouldChangeCharactersInRange
mathod。
NSString *fname = [textField.text stringByReplacingCharactersInRange:range withString:string];
[_detailsDictionary setObject:fname forKey:@"FName"];
希望它会对你有所帮助。
答案 4 :(得分:0)
改为使用
-(void) textFieldDidEndEditing:(UITextField *)textField
{
NSInteger field = textField.tag;
if(field ==1)
{
if(textField.text ==[_detailsDictionary valueForKey:@"FName"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"FName"];
}
}
if(field ==2)
{
if(textField.text ==[_detailsDictionary valueForKey:@"MName"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"MName"];
}
}
if(field ==3)
{
if(textField.text ==[_detailsDictionary valueForKey:@"LName"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"LName"];
}
}
if(field ==4)
{
if(textField.text ==[_detailsDictionary valueForKey:@"City"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"City"];
}
}
if(field ==5)
{
if(textField.text ==[_detailsDictionary valueForKey:@"State"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"State"];
}
}
if(field ==6)
{
if(textField.text ==[_detailsDictionary valueForKey:@"Country"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"Country"];
}
}
if(field ==7)
{
if(textField.text ==[_detailsDictionary valueForKey:@"DOB"])
{
NSLog(@"cell1.userDetailTextField.text %@",textField.text);
}
else
{
[_detailsDictionary setObject:textField.text forKey:@"DOB"];
}
}
}