在我的UITableViewCell中,我有一个带UIButton的UIImageView。
这是我的code
我的问题是,每当我尝试点击UIButton时,UITableViewCell都会被TouchUpInside事件而不是UIBUtton触发。
你能帮帮我吗?
答案 0 :(得分:0)
这是我的代码..这里我在UIButton
内使用了UITableViewCell
,它对我来说非常有用..希望这会对你有帮助..
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = @"ChildList";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
itsChildContactsTableView = tableView;
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
// we need a view to place our labels on.
UIView *aTableCellContentView = [[UIView alloc] initWithFrame:CGRectZero];
CGRect contentRect = aTableCellContentView.bounds;
CGFloat boundsX = contentRect.origin.x;
CGRect frame;
frame = CGRectMake(boundsX + 10, 8, 200, 20);
UIButton *aCallButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aCallButton setImage:[UIImage imageNamed:@"call.png"] forState:UIControlStateNormal];
[aCallButton addTarget:self action:@selector(dialNumber:) forControlEvents:UIControlEventTouchUpInside];
[aCallButton setTag:[indexPath row]];
frame = CGRectMake(210, 14, 35, 35);
aCallButton.frame = frame;
UIButton *aEmailButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aEmailButton setImage:[UIImage imageNamed:@"mail.png"] forState:UIControlStateNormal];
[aEmailButton addTarget:self action:@selector(eMailContact:) forControlEvents:UIControlEventTouchUpInside];
[aEmailButton setTag:[indexPath row]];
frame = CGRectMake(250, 14, 35, 35);
aEmailButton.frame = frame;
aTableCellContentView.backgroundColor = [UIColor whiteColor];
[cell.contentView addSubview:aCallButton];
[cell.contentView addSubview:aEmailButton];
[cell.contentView addSubview:aTableCellContentView];
[aTableCellContentView release];
return cell;
}
答案 1 :(得分:0)
如果您的UITableViewCell具有客户高度(不是默认的44.0f)。如果是这样,您应该设置如下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellID = @"cellID";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
cell.contentView.frame = CGRectMake(0, 0, tableView.width, [self tableView:tableView heightForRowAtIndexPath:indexPath]);
// add a UIButton that you create
}
return cell;
}
出现此问题的原因是cell.contentView.size是默认值(320.f,44.0f),如果您的按钮位于rect上,则该按钮无法接受该事件,因此您应该设置该单元格。 contentView.frame自己,就像我做代码一样。
祝你好运。