为什么UITableViewCell.contentView中的UIButton不起作用?



我做了很多测试和搜索,仍然找不到为什么我添加到UITableViewCell.contentView中的UIButton不会工作。我可以保证我做的一切都是正确的,按钮仍然不会回答TouchUpInside事件。

像这样的

代码不能工作:

[self.contentView addSubview:theButton];

但这是可行的:

[self addSubview:theButton];

如你所料,selfUITableViewCell的子类。和记录文档,我们不应该总是添加东西到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,就像我做代码一样。

祝你好运。

最新更新