UIButtons на tableFooterView не отвечает на события - PullRequest
3 голосов
/ 14 июля 2009

Я успешно добавил несколько UIB-кнопок в пользовательский tableFooterView. Проблема в том, что события кнопки не вызываются. Кроме того, изображение относительно UIControlStateHighlighted не подходит. Есть идеи? Я перепробовал все, что мог придумать, но не могу найти хитрость. Я сообщаю здесь интересную часть UITableViewController:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection: (NSInteger)section 
{
    CGRect footerFrame = CGRectMake(0.0, 0.0, 480, 190);
    _footerView = [[UIImageView alloc] initWithFrame: footerFrame];
    _footerView.image = [UIImage imageNamed:@"tableviewfooter.png"];
    _footerView.contentMode = UIViewContentModeTopLeft;

    UIButton *addExam = [self createButtonWithFrame: CGRectMake(10, 30, 460, 58) Target: self Selector: @selector(addNewItem:) Image: @"additem.png" ImagePressed: @"additem_pressed.png"];
    [_footerView addSubview:addExam];

    return _footerView;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection: (NSInteger) section
{
    return 190;
}


- (void) addNewItem:(id)sender
{
    // This get's never called
    NSLog(@"Pressed");
}


- (UIButton*) createButtonWithFrame: (CGRect) frame Target:(id)target Selector:(SEL)selector Image:(NSString *)image ImagePressed:(NSString *)imagePressed
{
    UIButton *button = [[UIButton alloc] initWithFrame:frame];

    UIImage *newImage = [UIImage imageNamed: image];
    [button setBackgroundImage:newImage forState:UIControlStateNormal];

    UIImage *newPressedImage = [UIImage imageNamed: imagePressed];
    [button setBackgroundImage:newPressedImage forState:UIControlStateHighlighted];

    [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];

    return button;
}

Спасибо за вашу помощь!

1 Ответ

6 голосов
/ 14 июля 2009

Я не думаю, что UIImageView был разработан, чтобы хорошо работать в качестве контейнера для других представлений, особенно UIButtons. Например, для UIImageView s при создании их свойство userInteractionsEnabled устанавливается по умолчанию false.

Я бы просто создал простой UIView в качестве нижнего колонтитула, а затем добавил бы UIButton и UIImageView непосредственно к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...