Estoy tratando de crear una vista personalizada para mi UITableView footerView que tiene un botón en él. Puedo ver lo que hay, pero cuando yo lo toque, no pasa nada… se puede ver lo que está mal aquí:

- (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.");
}
InformationsquelleAutor Steve N | 2010-10-21

5 Comentarios

  1. 38

    No estás configuración de la footerView del marco. Establecer el marco de la footerView a ser al menos tan alto como el botón de lo contrario, los toques no se pasan hacia el botón.

    • Que era él. Gracias!
    • Esto funcionó para mí cuando he implementado - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section; para especificar el pie de la altura.
    • Que trabajó también para mí, gracias!
  2. 7
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return 50.0f;
    }

    poner este método en la clase de su problema va a resolver…..

  3. 0

    Que usted necesita para establecer el formato tableview del sectionFooterHeight de la propiedad antes de la llamada a viewForFooterInSection se produce (no puede hacerlo dentro de la viewForFooterInSection método).

    • Especialmente si usted usa XIB para construir su UIView, usted necesita para implementar esta función
  4. -9

    Crear una subclase de UIView e incluir estos métodos:

    - (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];
    }
    • ¿Realmente necesito una subclase de UIView para lograr esto? Si es así, eso es molesto.

Dejar respuesta

Please enter your comment!
Please enter your name here