带有 TextField 和第一响应者的自定义 UITableViewCell

Posted

技术标签:

【中文标题】带有 TextField 和第一响应者的自定义 UITableViewCell【英文标题】:Custom TableViewCell with TextField and first responder 【发布时间】:2009-07-15 22:17:07 【问题描述】:

我有一个包含 TextField 的自定义 TableView 单元格,我希望它在视图显示后立即成为第一响应者,但 [textcell.textfield becomeFirstResponder] 不起作用。我知道这是因为它是另一个类中的自定义单元格,我什至在那里尝试过,但没有成功。有谁知道如何解决这个问题?

谢谢...

【问题讨论】:

【参考方案1】:

我有类似的设置,becomeFirstResponder 似乎工作正常。

我的自定义单元格:

@interface CustomCell : UITableViewCell 

    IBOutlet UITextField *costField;

还有来自控制器类的委托方法:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString* CellTableIdentifer = @"CellTableIdentifer";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellTableIdentifer];
    if (cell == nil)
    
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    

    NSUInteger row = [indexPath row];
    ReceiptItem *receiptItem = [models objectAtIndex:row];
    if (receiptItem == justAddedItem)
    
        [cell.costField becomeFirstResponder];
        justAddedItem = nil;
    

justAddedItem 在用户单击按钮以向表中添加新行时设置。

【讨论】:

【参考方案2】:
- (void) viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];
    self.navigationController.toolbarHidden = YES;
    self.title = @"Login";

    [NSTimer scheduledTimerWithTimeInterval:0.1
                                     target:self
                                   selector:@selector(doSetFirstResponder)
                                   userInfo:nil
                                    repeats:NO];


- (void) doSetFirstResponder 
    [_usernameField becomeFirstResponder];

【讨论】:

为提高您的帖子质量,请说明您的答案将如何/为何解决问题。

以上是关于带有 TextField 和第一响应者的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

TextField 子视图未通过 UITableViewCell 框架大小更改调整大小

切换 uitextfield 的输入视图

未在具有自定义文本字段的自定义 TableView 中设置第一响应者

具有响应式表单的自定义控件

带有 RepositoryRestResource-s 和常规控制器的 Spring REST HATEOAS 中的根请求的自定义响应

将 TextField 内容保存在自定义动态 tableView 中