在单元格中选择自定义UITextView时选择单元格

时间:2011-04-01 22:25:50

标签: iphone objective-c

我创建了一个自定义单元格函数,其中包含两个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标签,它是否将第一个响应者传递给单元格,以便在正确触发我的应用程序的其余部分时?

1 个答案:

答案 0 :(得分:1)

我找到了答案,在发布此问题之前我应该​​看起来更好。 This answer worked for me这是terra关于userinteractionenabled的答案。我所做的是当创建单元格时,为我的文本字段设置userinteractionenabled为NO,在示例代码中标记为tempValue,然后在willSelectRowForIndexPath中将userinteractionenabled切换为YES。我应该更清楚地了解它。