UITableView 中的 UITextField:设置表格的第一响应者视图,但我们不知道它的类型(单元格/页眉/页脚)

Posted

技术标签:

【中文标题】UITableView 中的 UITextField:设置表格的第一响应者视图,但我们不知道它的类型(单元格/页眉/页脚)【英文标题】:UITextField in UITableView: setting the first responder view of the table but we don't know its type (cell/header/footer) 【发布时间】:2013-07-31 19:57:30 【问题描述】:

我在 UITableViewCell 中有一个 UITextField,我想检测用户何时开始在 UITextField 中输入内容。所以我设置了 UITextFields 委托,但是当该代码运行时,我收到警告“设置表的第一响应者视图但我们不知道它的类型(单元格/页眉/页脚)”并且 UITextField 委托方法不会被调用.如何正确调用 UITextField 方法?

-(void)tableView:(id)view willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
    if ((indexPath.section == 0) && (indexPath.row == 3)) 
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(friendCellTapped)];
        [tap setNumberOfTapsRequired:1];
        [cell addGestureRecognizer:tap];
    
    else if ((indexPath.section == 0) && (indexPath.row == 4)) 
        NSLog(@"im called");
        UITextField *tagBox = [[UITextField alloc] initWithFrame:CGRectMake(50, 6, 225, 25)];
        [tagBox setBorderStyle:UITextBorderStyleRoundedRect];
        [tagBox setReturnKeyType:UIReturnKeyDone];
        tagBox.delegate = self;
        [cell addSubview:tagBox];
    
    else 
        %orig;
    

【问题讨论】:

显示如何在单元格上配置文本视图的代码。 能否添加整个方法,通常您看到的错误是由于视图未正确添加到单元格引起的。您是否有其他一些视图被添加为表格视图的直接子视图? 是的,我添加了它。 UITextField 是唯一添加到该单元格的子视图 您是否在单元格之外添加任何内容,直接添加到表格视图中? 【参考方案1】:

我之前通过在我的UIViewController 类上创建一个UITextField 变量并将其设置为tableView:cellForRowAtIndexPath 中的UITableViewCell 的文本字段来完成此操作。然后我在viewDidAppear: 中设置我的UITextField 变量的委托。

类似这样的:

-(void)viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];

    self.theTextField.delegate = self;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
   //load custom cell

   self.theTextField = myCustomCell.cellTextField;

   return myCustomCell;

然后你的 UITextFieldDelegate 方法应该被调用。

【讨论】:

所以我必须创建一个自定义的 uitableviewcell?没有那个就没有办法了吗? 这是我所知道的在 UITableViewCell 中拥有 UITextField 的唯一方法 好吧,我现在在 UITableView 中有一个 UITextField,只需将其作为子视图添加到单元格中,它就不会调用委托方法 哦,好吧,你添加为子视图。是的,我会推荐一个自定义的 UITableViewCell。对我来说效果很好。 嗯,这是我正在做的越狱调整,所以我必须使用应用程序使用的当前单元格:P

以上是关于UITableView 中的 UITextField:设置表格的第一响应者视图,但我们不知道它的类型(单元格/页眉/页脚)的主要内容,如果未能解决你的问题,请参考以下文章

水平 UITableView 中的垂直 UITableView

在 UITableView 中的 UINib 中重新加载 UITableView

尝试在用户向 iOS 中的 UITableView 添加行时动态增加 UITableView 的高度

UIViewController 中的 UITableView

UITableView 中的圆顶角

uiscrollview 中的 uitableview(滚动问题)