Пользовательские кнопки в XIB, используемые как пользовательский UITableViewCell, не реагируют на краны (ios7)

Итак, здесь я обновляю рабочее приложение ios6 для ios7, и теперь я не могу получать ответвления или другие действия на пользовательских кнопках (или других подзаголовках) внутри моих табличных сокетов.

Edit:

Мой код:

Вот где я разворачиваю свой PlaceCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier = @"PlaceCell";

    PlaceCell *cell = [tableView dequeueReusableCellWithIdentifier: cellIdentifier];

    if (!cell) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlaceCell" owner:self options:nil];
        cell = [nib lastObject];
        cell.reuseIdentifier = cellIdentifier;
    }
    [cell configureCellWithPlace: [self.places objectAtIndex:indexPath.row]];
    cell.delegate = self;
    cell.userInteractionEnabled = YES;

    return cell;
}

И тогда это обычная пользовательская ячейка с кнопками, которые связаны с некоторыми действиями интерфейса. Он отлично работает с iOS6, но он ничего не делает с iOS7.

Благодарим вас за помощь.

Ответы

Ответ 1

Решено:

[cell.contentView setUserInteractionEnabled: NO];

Ответ 2

Это происходит, когда просмотр ячейки в файле xib не является UITableViewCell, а только UIView. Убедитесь, что представление верхнего уровня xib является UITableViewCell.

Вы можете легко проверить его, посмотрев на первого ребенка основного вида внутри построителя интерфейса. Если первое подвью не является "Просмотр содержимого", вы должны перестроить ячейку с помощью UITableViewCell вверху.

Также убедитесь, что кнопка является подзором "Просмотр содержимого".

Ответ 3

Поместите свою кнопку в ячейку contentView.

Ответ 4

У меня была аналогичная проблема. Я перетащил UIView в xib для использования в качестве UITableViewCell. Несмотря на то, что я изменил имя класса на подкласс UITableViewCell в Interface Builder, события на моих кнопках все еще не срабатывали. Поскольку он первоначально был UIView, IB никогда не знал о contentView и не добавлял к нему свои элементы управления.

Перетащив "реальный" UITableViewCell в xib, изменив его класс на тот, который я хотел, а затем снова восстановил IBOutlets все. Не нужно было возиться с delaysContentTouches или другими свойствами.

Мораль истории: перетащите правильную вещь на свои xibs.

Ответ 5

Похоже, что когда вы используете конструктор интерфейса для настройки подкласса ячейки, все добавленные представления добавляются под contentView. Вот почему установка userInteractionEnabled = NO в представлении контента работает, потому что события касания позволяют проходить через.

Я использовал po [view recursiveDescription] с lldb, чтобы определить это.