使用TextField和第一响应者自定义UITableViewCell

时间:2009-07-15 22:17:08

标签: iphone objective-c cocoa-touch first-responder

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

...谢谢

2 个答案:

答案 0 :(得分:0)

我有一个类似的设置和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

答案 1 :(得分:0)

- (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];
}