我创建了一个自定义单元格函数,其中包含两个uitextfields,因为我不喜欢cell.textLabel和cell.detailTextLabel的外观。当我在cellForRowAtIndexPath中为表创建单元格时,将调用此函数。当用户选择单元格时,弹出一个键盘,以便您可以编辑第一个文本字段。但是,当您触摸或接近第一个文本字段的文本时,它会拉起键盘,但它不会触发我所拥有的textFieldShouldReturn函数,如果在其他位置选择了单元格,则会触发该函数。我有textFieldShouldReturn函数将数据保存到应用程序。
这是自定义单元格功能
- (UITableViewCell *)getCellContentView:(NSString *)cellIdentifier
{
CGRect CellFrame = CGRectMake(0, 0, 300, 60);
CGRect Label1Frame = CGRectMake(10, 8, 1, 25);
CGRect Label2Frame = CGRectMake(10, 34, 100, 13);
CGRect Image1Frame = CGRectMake(265, 10, 30, 30);
CGRect Image2Frame = CGRectMake(230, 10, 30, 30);
UITextField *lblTemp;
UIButton *imgTemp;
UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CellFrame reuseIdentifier:cellIdentifier] autorelease];
//initialize label with tag 1
lblTemp = [[UITextField alloc] initWithFrame:Label1Frame];
lblTemp.tag = 1;
[cell.contentView addSubview:lblTemp];
[lblTemp sizeToFit];
[lblTemp release];
lblTemp = [[UITextField alloc] initWithFrame:Label2Frame];
lblTemp.tag = 2;
[cell.contentView addSubview:lblTemp];
[lblTemp release];
imgTemp = [[UIButton alloc] initWithFrame:Image1Frame];
imgTemp.tag = 3;
[cell.contentView addSubview:imgTemp];
[imgTemp release];
imgTemp = [[UIButton alloc] initWithFrame:Image2Frame];
imgTemp.tag = 4;
[cell.contentView addSubview:imgTemp];
[imgTemp release];
return cell;
- (UITableViewCell *)getCellContentView:(NSString *)cellIdentifier
cellForRowAtIndexPath函数
UITextField *lblTemp;
UIButton *imgTemp;
UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CellFrame reuseIdentifier:cellIdentifier] autorelease];
//initialize label with tag 1
lblTemp = [[UITextField alloc] initWithFrame:Label1Frame];
lblTemp.tag = 1;
[cell.contentView addSubview:lblTemp];
[lblTemp sizeToFit];
[lblTemp release];
lblTemp = [[UITextField alloc] initWithFrame:Label2Frame];
lblTemp.tag = 2;
[cell.contentView addSubview:lblTemp];
[lblTemp release];
imgTemp = [[UIButton alloc] initWithFrame:Image1Frame];
imgTemp.tag = 3;
[cell.contentView addSubview:imgTemp];
[imgTemp release];
imgTemp = [[UIButton alloc] initWithFrame:Image2Frame];
imgTemp.tag = 4;
[cell.contentView addSubview:imgTemp];
[imgTemp release];
return cell;
}
我使用willSelectRowAtIndexPath来触发我的应用程序的其余部分,正如我之前所说,只要未选择标签tempValue,一切正常。有没有办法,如果用户按下tempValue标签,它是否将第一个响应者传递给单元格,以便在正确触发我的应用程序的其余部分时?
答案 0 :(得分:1)
我找到了答案,在发布此问题之前我应该看起来更好。 This answer worked for me这是terra关于userinteractionenabled的答案。我所做的是当创建单元格时,为我的文本字段设置userinteractionenabled为NO,在示例代码中标记为tempValue,然后在willSelectRowForIndexPath中将userinteractionenabled切换为YES。我应该更清楚地了解它。