我做了很多测试和搜索,仍然找不到为什么我添加到UITableViewCell.contentView
中的UIButton
不会工作。我可以保证我做的一切都是正确的,按钮仍然不会回答TouchUpInside
事件。
代码不能工作:
[self.contentView addSubview:theButton];
但这是可行的:
[self addSubview:theButton];
如你所料,self
是UITableViewCell
的子类。和记录文档,我们不应该总是添加东西到contentView
吗?
在cellForRowAtIndexPath方法中试试这段代码
UIButton *scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
scanQRCodeButton.frame = CGRectMake(260.0f, 6.0f, 45.0f, 25.0f);
scanQRCodeButton.backgroundColor = [UIColor whiteColor];
[scanQRCodeButton setTitle:@"button" forState:UIControlStateNormal];
[cell.contentView addSubview:scanQRCodeButton];
如果你的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),如果你的按钮在矩形上,那么按钮不能接受事件,所以你应该自己设置cell.contentView.frame,就像我做代码一样。
祝你好运。