UITableViewCell内的UITextField不会成为第一响应者

问题描述:

我的应用程序有一个奇怪的问题。在阅读了所有关于几乎相同问题的问题之后,我仍然无法找到解决问题的方法。 我使用UITableViewController来显示KoreanFood的详细信息。第一个单元格是一个带有Image和两个UITextField的自定义UITableViewCell(OverviewCell),我在Storyboard(AutoLayout)中创建和布局了这两个UITextField。它看起来像这样UITableViewCell内的UITextField不会成为第一响应者

https://dl.dropboxusercontent.com/u/28177144/Screen%20Shot%202013-05-29%20at%2023.39.46.png (抱歉,我不能嵌入图片,但我还没有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; 

我在故事板文本字段设置为启用/ 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; 
    } 

与布尔的评论是NO,我只是不知道为什么......当我设置文本,它的正确显示,我知道奥特莱斯设置和细胞不是零(我检查了)。 为什么这个* *不成为第一响应者? 我也尝试了一些建议,如点击测试或实现setSelected:/ setEditing:方法的OverviewCell子类。但是,这里的textField成为FirstFoundResponder也不会改变任何内容。

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

视图不能成为第一个响应,直到它被添加到响应者链,当视图被添加因为这是在应用程序对象的窗口列表的窗口中的视图的子视图,其自动发生。换句话说,你的单元格还没有添加到表格视图中,所以它没有连接任何东西,因此不能成为第一响应者。

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

overviewCell.koreanTitleTF.enabled = NO; 
+0

嘿jlehr,谢谢你的提示,但我有一个名为从firstresponder成为几乎无处不在,inuding的viewDidLoad答didSelectRowAtIndexPath方法,所以电池应该在响应链吗? – fruitcoder

+0

您发布的方法是从故事板中取出单元格。此时单元格在内存中,但尚未添加到表格视图中。所以不,它不在响应者链中,因此对'becomeFirstResponder'的调用没有效果。 – jlehr

+0

但是当我调用didSelectRowAtIndexPath成为FirstRepsonder时,它应该是:) – fruitcoder