将UITextfield中的每个字符记录到IOS中的NSDictionary中

将UITextfield中的每个字符记录到IOS中的NSDictionary中,ios,objective-c,uitextfield,uicollectionviewcell,Ios,Objective C,Uitextfield,Uicollectionviewcell,我正在使用UICollectionview,每个单元格都有UITextfield,我正在尝试从和每个textfield获取完整的字符串,并保存到字典中。我使用了以下代码 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (textField.tag==100) {

我正在使用UICollectionview,每个单元格都有UITextfield,我正在尝试从和每个textfield获取完整的字符串,并保存到字典中。我使用了以下代码

  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (textField.tag==100) {
         [m11ThumbImage_MutCaptionDictionary setValue:[textField.text stringByAppendingString:string] forKey:@"image_0001"];
    }
    if (textField.tag==101) {
        [m11ThumbImage_MutCaptionDictionary setValue:[textField.text stringByAppendingString:string] forKey:@"image_0002"];
    }
    }
我试过:

使用上述代码,我能够正确设置字符串,但如果我删除字符,则不会调用上述方法,也不会更新字典

TextFieldDidBeginEditing最初调用,只能录制1个字符。还尝试了其他委托方法

预期产出:

{
image_0001: All Character,
image_0002: A
}

任何帮助都将被否决。谢谢。

textField shouldchangeCharactersRange
文本字段
实际更改其文本之前被调用,如果您需要获取更新值,请执行类似操作

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
      
    if (textField.tag==100) {
         [m11ThumbImage_MutCaptionDictionary setValue:[textField.text stringByReplacingCharactersInRange:range withString:string] forKey:@"image_0001"];
    }
    else if (textField.tag==101) {
    [m11ThumbImage_MutCaptionDictionary setValue:[textField.text stringByReplacingCharactersInRange:range withString:string] forKey:@"image_0002"];
}
}
更新的答案

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
      
        NSString * currentStr = [textField.text stringByReplacingCharactersInRange:range withString:string];

    if (textField.tag==100) {
         [m11ThumbImage_MutCaptionDictionary setValue:currentStr forKey:@"image_0001"];
    }
    else if (textField.tag==101) {
    [m11ThumbImage_MutCaptionDictionary setValue:currentStr forKey:@"image_0002"];
     }
  return YES;
}
备用方式

在viewdidload中添加以获取
编辑更改的文本字段事件
,我建议将选择器添加为

[textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged];
随着textfield值的更改,您将从此
textChanged:
选择器中获得的更改值

 -(void)textChanged:(UITextField *)textField
   {
    NSLog(@"textfield data %@ ",textField.text);
    if (textField.tag==100) {
     [m11ThumbImage_MutCaptionDictionary setValue:[textField.text stringByAppendingString:string] forKey:@"image_0001"];
   }
 else if (textField.tag==101) {
    [m11ThumbImage_MutCaptionDictionary setValue:[textField.text stringByAppendingString:string] forKey:@"image_0002"];
}
}

如果我删除字符,则应更改字符范围不调用。我无法记录他们如何解决此问题?您是否设置了文本字段的代理是。这就是为什么要在范围内改变角色calling@AvijitNagare-我的兄弟,应该改变角色Range是获取当前数据的最佳位置text@AvijitNagare否则我们就换个主意等等