Objective c UITableViewCell中的UITextField赢得';不要成为第一反应者

Objective c UITableViewCell中的UITextField赢得';不要成为第一反应者,objective-c,uitableview,uitextfield,first-responder,Objective C,Uitableview,Uitextfield,First Responder,我的应用程序有一个奇怪的问题。在我阅读了几乎相同问题的所有问题后,我仍然找不到解决问题的方法。 我使用UITableViewController显示韩国食品的详细信息。第一个单元格是一个自定义UITableViewCell(OverviewCell),带有一个图像和两个UITextFields,我在Storyboard(自动布局)中创建并布局了它们。看起来像这样 (对不起,我不能嵌入图片,但我还没有10个声誉) 我将UITableviewCell子类化如下: OverviewCell.h @i

我的应用程序有一个奇怪的问题。在我阅读了几乎相同问题的所有问题后,我仍然找不到解决问题的方法。 我使用UITableViewController显示韩国食品的详细信息。第一个单元格是一个自定义UITableViewCell(OverviewCell),带有一个图像和两个UITextFields,我在Storyboard(自动布局)中创建并布局了它们。看起来像这样

(对不起,我不能嵌入图片,但我还没有10个声誉)

我将UITableviewCell子类化如下:

OverviewCell.h
@interface OverviewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UITextField *englishTitleTF;
@property (strong, nonatomic) IBOutlet UITextField *koreanTitleTF;
@property (strong, nonatomic) IBOutlet UIImageView *myImageView;
@property (strong, nonatomic) UIImage *thumbnail;
故事板中的我的文本字段设置为enabled/UserInteractionenabled,代理是我的TVC。创建单元格时,我也会在代码中执行此操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == GENERAL_SECTION) {
        static NSString *overviewCellID = @"overviewCell";
        OverviewCell *overviewCell = [tableView dequeueReusableCellWithIdentifier:overviewCellID forIndexPath:indexPath];

        overviewCell.englishTitleTF.text = self.generalInfo.titleEnglish;
        overviewCell.koreanTitleTF.text = self.generalInfo.titleKorean;
        overviewCell.englishTitleTF.enabled = YES;
        overviewCell.koreanTitleTF.enabled = NO;
        //BOOL test = [overviewCell.englishTitleTF becomeFirstResponder];
        overviewCell.koreanTitleTF.delegate = self;
        overviewCell.englishTitleTF.delegate = self;

        UIImageView *imageView = [[UIImageView alloc] initWithImage:self.generalInfo.thumbnail];
        overviewCell.myImageView = imageView;
        overviewCell.myImageView.frame = CGRectMake(25, 25, 95, 95);
        [overviewCell addSubview:overviewCell.myImageView];

        return overviewCell;
    }
对BOOL的评论是否定的,我只是不知道为什么。。。当我设置文本并正确显示时,我知道插座已设置,单元格不是零(我已检查)。 为什么这个**没有成为第一反应者? 我还在OverviewCell子类中尝试了一些建议,比如命中测试或实现setSelected:/setEditing:方法。但是成为文本字段的第一响应者也不会改变任何事情


任何帮助都将不胜感激,我对此感到绝望

只有将视图添加到响应器链中,视图才能成为第一响应器,当视图作为应用程序对象的窗口列表中的视图的子视图添加时,会自动发生这种情况。换句话说,您的单元格尚未添加到表视图,因此它未连接到任何内容,因此无法成为第一响应者

尝试从表视图加载完单元格后调用的方法发送
becomeFirstResponder
。当然,不要这样做:

overviewCell.koreanTitleTF.enabled = NO;

嘿,jlehr,谢谢你的提示,但我已经从几乎所有地方打电话给Been firstresponder,使用viewdidload和didSelectRowatIndexPath,所以单元格应该在响应器链中,对吗?你发布的方法是将单元格从故事板中排出队列。此时,单元格位于内存中,但尚未添加到表视图中。所以不,它还不在响应器链中,因此对
becomeFirstResponder
的调用没有效果。但是当我在didSelectRowAtIndexPath中调用becomeFirstRepsonder时,它应该是:)我怎样才能知道它何时被添加到响应程序链中?当UIKit视图被添加到子视图数组中,或者当它们被加载到视图控制器的
view
属性中时,UIKit视图会自动添加到响应程序链中。