UITableView footerView带按钮,按钮不起作用

Ste*_*e N 24 iphone footer uitableview

我正在尝试为我的UITableView页脚视图创建一个自定义视图,其中包含一个按钮.我可以在那里看到它,但当我触摸它时,没有任何反应......你能看出这里的错误:

- (void)viewDidLoad {
    [super viewDidLoad];

    if(self.tableView.tableFooterView == nil) {
        //allocate the view if it doesn't exist yet
        UIView *footerView  = [[UIView alloc] init];

        //create the button
        UIButton *addNewBtn = [UIButton buttonWithType:UIButtonTypeCustom];     
        //the button should be as big as a table view cell
        [addNewBtn setFrame:CGRectMake(0, 0, 320, [AddMerchantTVC cellHeight])];

        //set title, font size and font color
        [addNewBtn setTitle:@"Add New" forState:UIControlStateNormal];
        [addNewBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
        [addNewBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [addNewBtn addTarget:self action:@selector(addNew:) forControlEvents:UIControlEventTouchUpInside];

        UIImageView *cellGradient = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellGradient.png"]];
        cellGradient.frame = CGRectMake(0, 54, 320, 16);
        [footerView addSubview:cellGradient];

        //add the button to the view
        [footerView addSubview:addNewBtn];
        footerView.userInteractionEnabled = YES;
        self.tableView.tableFooterView = footerView;
        self.tableView.tableFooterView.userInteractionEnabled = YES;

        [footerView release];
        [cellGradient release];
}

- (void)addNew:(id)sender {
    // This is never called
    NSLog(@"Touched.");
}
Run Code Online (Sandbox Code Playgroud)

小智 38

你没有设置footerView的框架.将footerView的框架设置为至少与按钮一样高,否则触摸不会传递到按钮.

  • 当我实现 `- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section; 时,这对我有用。` 指定页脚高度。 (2认同)

jay*_*iya 7

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 50.0f;
}
Run Code Online (Sandbox Code Playgroud)

把这个方法放在你的班上你的问题会解决.....