UIButton не работает внутри UItableViewCell - PullRequest
2 голосов
/ 12 июля 2011

У меня есть представление, состоящее из метки и двух кнопок, которые я назвал UIView *footerView, поскольку я реализую это в последнем разделе моего табличного представления.Я получил это представление для indexPath.section = 3, используя [cell.contentView addSubview: footerView]

Это моя проблема:

Я могу видеть представление внутри ячейки.Но я не могу нажимать кнопки, так как вместо кнопок (которые находятся внутри ячеек) выделяется ячейка.

Как мне решить эту проблему? Мои кнопки даже не доступны для выбора!

Вот код ... In cellForRowAtIndexPath:

if (section == 3){

    cell = nil;
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    if (indexPath.row ==0){

        cell.contentMode = UIViewContentModeScaleToFill;
        [cell.contentView addSubview:self.footerView];

    }

}

И представление нижнего колонтитула (весли кому-то нужно это увидеть):

 UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 3, 300, 44)];
textView.text = @"Terms and Conditions: Lorem ipsum dolor sit amet, con- sectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut";

textView.backgroundColor = [UIColor clearColor];
textView.font = [UIFont systemFontOfSize:10];

[self.footerView addSubview:textView];

//create the button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[button setFrame:CGRectMake(0, 60, 300, 44)];

//set title, font size and font color
[button setTitle:@"Create Account" forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:18]];
// [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

//set action of the button
[button addTarget:self action:@selector(createAccount:)
 forControlEvents:UIControlEventTouchUpInside];

[button setEnabled:YES];
//add the button to the view
[self.footerView addSubview:button];


UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[cancelButton setFrame:CGRectMake(0, 107, 300, 44)];

//set title, font size and font color
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[cancelButton.titleLabel setFont:[UIFont boldSystemFontOfSize:18]];
// [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

//set action of the button
[cancelButton addTarget:self action:@selector(cancelPressed:)
       forControlEvents:UIControlEventTouchUpInside];


[cancelButton setEnabled:YES];
//add the button to the view
[self.footerView addSubview:cancelButton];

1 Ответ

6 голосов
/ 12 июля 2011

Вам нужно будет реализовать что-то похожее на это

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (3 == indexPath.section){
      return nil;
    }
    return indexPath;
}

Хорошо, так что, если я реализую вышеупомянутое, это работает отлично. Я считаю, что могу воспроизвести вашу проблему, заставив рамку UIButton выйти за пределы ячейки contentView. Убедитесь, что ячейка достаточно велика, чтобы вместить вашу метку, и она должна работать правильно. Чтобы увеличить ячейку под ваш контент, вам, возможно, придется реализовать:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  return aHeightThatIsBigEnoughToContainMySubViews;
}
...