没有在自定义单元格上调用文本字段确实开始编辑

Posted

技术标签:

【中文标题】没有在自定义单元格上调用文本字段确实开始编辑【英文标题】:textfield did begin editing is not being called on custom cell 【发布时间】:2017-01-13 10:42:23 【问题描述】:

我在表格视图上有自定义单元格。单元格有一个文本字段。例如,如果我有 4 个单元格,每个单元格都带有文本字段。我可以点击三个文本字段,并且相关的文本字段确实开始编辑。但是对于其中一个文本字段,当我点击它时 - 文本字段确实开始编辑并没有被调用。这是我的方法

  -(void)textFieldDidBeginEditing:(UITextField *)textField

          NSString *SelectedIndexString = [[NSUserDefaults standardUserDefaults]
                                         stringForKey:@"SelectedIndex"];
        NSInteger selectionCount = [SelectedIndexString integerValue];
        NSLog(@"%ld",(long)selectionCount);

            if (selectionCount) 
                self.accountNameTxtField.enabled = NO;
            
            else
                self.accountNameTxtField.enabled = YES;


            
    

//  STTableViewCell

         @interface STTableViewCell () <UITextFieldDelegate>
         - (void)awakeFromNib  
              [super awakeFromNib];
              radioBtn.alpha = 0; // Initialization code [self customBorder]; 
              // Setting the OTP label color to the RGB blue       
              self.OTPLabel.textColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]; 
              // Set delegate to textfield 
              self.accountNameTxtField.delegate=self; 
           

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 

    [super setEditing:editing animated:animated];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"No Change" object:nil];

    if (!editing)
    

         radioBtn.alpha = 0;
        isTableviewEditing=NO;
        if (![self.authURL.name isEqual:accountNameTxtField.text]) 

            self.accountNameTxtField.text = [self.accountNameTxtField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
            if (accountNameTxtField.text.length >= 1)
            
            // Write out the changes.
                descriptionBlank = NO;

                self.authURL.name = self.accountNameTxtField.text;
                [self.authURL saveToKeychain];
            
            else
                [accountNameTxtField resignFirstResponder];
                [self.delegate cellDidTap:self];
                self.accountNameTxtField.text =self.authURL.name;
                descriptionBlank = YES;
            

        
        accountNameTxtField.userInteractionEnabled=NO;
        [accountNameTxtField resignFirstResponder];
        for (CALayer *layer in accountNameTxtField.layer.sublayers) 
            if ([layer.name isEqualToString:@"Gradient"])
            
                [layer setHidden:YES];
                break;
            
        

        progressView.alpha=1.0;
        OTPLabel.alpha=1.0;

    
    else
    
         radioBtn.alpha = 1;
        isTableviewEditing=YES;

        for (CALayer *layer in accountNameTxtField.layer.sublayers) 
            if ([layer.name isEqualToString:@"Gradient"])
            
                [layer setHidden:NO];
                break;
            
        

        OTPLabel.alpha=0.0;
        progressView.alpha=0.0;
        accountNameTxtField.userInteractionEnabled=YES;

    


- (void)setSelected:(BOOL)selected animated:(BOOL)animated

    [super setSelected:selected animated:animated];
    if (selected) `selectHilightCount++;
        self.accountNameTxtField.enabled = NO;
     else 
        self.accountNameTxtField.enabled = YES;
    `

【问题讨论】:

你设置代理了吗? 是的。其他文本字段正在调用它.. 能否请您显示您设置委托的那段代码?另外,您是否为您的UITableViewCell 覆盖了prepareForSegue 我已经在自定义单元格 Xib 中设置了委托。我没有使用 prepare for segue 方法。 这可能是问题所在。你能显示你的UITableViewCell 子类吗? 【参考方案1】:

请设置委托。 喜欢:

cell.txtFld.delegate = self;

希望对你有帮助。谢谢

【讨论】:

嗨,克里希纳,它不适用于特定的文本字段。方法被其他文本字段调用.. @Sadik 我猜 Krishna 是对的,你试过了吗?【参考方案2】:
-(void)textFieldDidBeginEditing:(UITextField *)textField

 CustomCell *cell = (CustomCell *)[self.tableView viewWithTag:textField.tag];
 NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
 NSLog@("indexPath ===%ld", indexPath.row)
 // You can make logic as you want

【讨论】:

您好,如何在此处获取自定义单元格文本字段以启用和禁用文本字段的用户交互 你可以得到你的文本字段 UITextfield *txtValue = (UITextfield *)[cell viewWithTag:your tag value];

以上是关于没有在自定义单元格上调用文本字段确实开始编辑的主要内容,如果未能解决你的问题,请参考以下文章

无法在自定义 UITableViewCell 中更新 UITextView 的文本

如何固定表格视图中自定义单元格文本字段的标签值?

如何在自定义 UITableView 单元格上获取 UITextField 值

在自定义 tableView 单元格上使用 contentView 属性(作为标题传递)如何防止它使自定义属性无效?

UITableView 单元格未显示放置在自定义单元格上的 UITableView(KPDropDown)

如何在自定义表格视图单元格中保存文本字段