代码之家  ›  专栏  ›  技术社区  ›  Steve N

带按钮的UITableView页脚视图,按钮不起作用

  •  24
  • Steve N  · 技术社区  · 14 年前

    - (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.");
    }
    
    5 回复  |  直到 14 年前
        1
  •  38
  •   user467105 user467105    14 年前

    您没有设置页脚视图的框架。将页脚视图的框架设置为至少与按钮一样高,否则触摸不会传递到按钮。

        2
  •  7
  •   Daniel    12 年前
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return 50.0f;
    }
    

    把这个方法放在你的课堂上,你的问题就会解决。。。。。

        3
  •  1
  •   nivritgupta    11 年前

    这对我很有用我只是补充

    footerView.frame =CGRectMake(0, 300, 100, 100);
    
        4
  •  0
  •   Asad R.    13 年前

    你需要设置tableView的 调用之前的属性 viewForFooterInSection视图 发生(无法在viewForFooterInSection方法内执行)。

        5
  •  -9
  •   christo16    14 年前

    创建UIView的子类并包含以下方法:

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
        return [super hitTest:point withEvent:event];
    }
    
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
        return [super pointInside:point withEvent:event];
    }