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

Posted

技术标签:

【中文标题】将UITextfield中的每个字符记录到IOS中的NSDictionary中【英文标题】:Record each character from UITextfield into NSDictionary in IOS 【发布时间】:2017-03-31 05:51:29 【问题描述】:

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

  - (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

任何帮助都会被投票。谢谢。

【问题讨论】:

【参考方案1】:

textField shouldChangeCharactersInRangetext field 实际更改其文本之前被调用,如果您需要获取更新值,那么就这样做

- (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 中添加要获得EditingChanged textfield event,我建议将选择器添加为

[textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged];

随着文本字段值的更改,您将从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"];


【讨论】:

如果我删除字符,shouldChangeCharactersInRange 不会调用。我无法记录他们如何解决这个问题? 您是否设置了文本字段的代表 是的。这就是为什么 shouldChangeCharactersInRange 调用 @AvijitNagare - 我的兄弟,shouldChangeCharactersInRange 是捕获当前文本的最佳位置 @AvijitNagare = 否则我们会选择其他想法等待

以上是关于将UITextfield中的每个字符记录到IOS中的NSDictionary中的主要内容,如果未能解决你的问题,请参考以下文章

RunTime 在iOS中的应用与UITextField占位字符placeholder自定义

iOS 在组件中存储随机属性,例如没有子类的 UITextField

填写所有 UITextField 时,UIButton 未启用

允许在 UITextfield ios 中使用德语 UMLAUT 字符

UIAlertView 中的 iOS / UITextField

ScrollView 中的 UITextField 在 iOS 中不显示键盘