У меня возникают проблемы с тем, чтобы мои кнопки работали ниже определенного значения y в ячейках таблицы. Я использую пользовательский класс UITableViewCell с именем "RowWhiskyContent". Высота по умолчанию составляет 44 пикселя, и ниже этой точки мои события, похоже, больше не срабатывают. Кнопка отображается очень хорошо, как и все остальное ниже этой точки, однако событие, похоже, не срабатывает. Если я помещу свою кнопку наполовину (как при y = 35), только верхняя часть кнопки вызывает событие, а нижняя часть ничего не делает.
Вот код, сокращенный до основных:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;
if(![self createView:&cell])
{
UIImage *bottle = [UIImage imageNamed:@"icon_add.png"]; //image size: 22x22
UIButton *bottleButton = [[UIButton alloc] initWithFrame:CGRectMake(60, 70, bottle.size.width, bottle.size.height)];
[bottleButton setImage:bottle forState:UIControlStateNormal];
[cell.contentView addSubview:bottleButton];
[bottleButton addTarget:self action:@selector(addToCollection:) forControlEvents:UIControlEventTouchUpInside];
cell.contentView.frame = CGRectMake(cell.contentView.frame.origin.x, cell.contentView.frame.origin.y, cell.contentView.frame.size.width, 160);
//cell.frame = cell.contentView.frame; // Tried this, didn't work.
//[tableView reloadData]; // Tried this too, didn't work either.
}
return cell;
}
// Check if cell exists and create the cell if it doesn't.
-(BOOL) createView: (UITableViewCell**) cell
{
BOOL cellExists = YES;
*cell = (RowWhiskyContent *) [myTableView dequeueReusableCellWithIdentifier:@"ContentIdentifier"];
if(*cell == nil)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"RowWhiskyContent" owner:self options:nil];
*cell = [topLevelObjects objectAtIndex:0];
cellExists = NO;
}
return cellExists;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
return 160;
}
Так как я устанавливаю высоту ячейки и contentView на 160, я не уверен, что здесь происходит неправильно. Перезагрузка данных не сработала, как и установка cell.frame.
Может кто-нибудь сказать мне, что я делаю не так?
Заранее спасибо.
EDIT:
Добавлен скриншот:
Красная кнопка работает нормально, но если поместить ее в положение зеленой кнопки, она перестает работать. Фон содержимого просмотра имеет фиолетовый цвет, что объясняет фиолетовую область. При нажатии на ячейку запускается didSelectRowAtIndexPath
, поэтому я предполагаю, что сама ячейка также достаточно велика.