XIB中用作自定义UITableViewCell的自定义button不响应水龙头(ios7)

所以在这里,我正在升级一个工作的ios6应用程序到ios7,现在我不能接收在我的tableviewcells内自定义button(或其他子视图)的水龙头或其他行动。

编辑:

我的代码:

这里是我部署我的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; } 

然后它是一个正常的自定义单元格,其button通过接口连接到某些动作。 它适用于iOS6,但是对iOS7没有任何作用。

感谢您的帮助。

解决:

 [cell.contentView setUserInteractionEnabled: NO]; 

当你的Cell的xib文件中的视图不是UITableViewCell,而只是一个UIView时,会发生这种情况。 确保xib的顶视图是一个UITableViewCell。

您可以通过查看界面构build器中主视图的第一个子项来轻松检查它。 如果第一个子视图不是“内容视图”,那么你应该用顶层的UITableViewCell重build单元格。

还要确保该button是“内容视图”的子视图。

把你的button放到单元格的contentView

我有一个类似的问题。 我把UIView拖到xib中作为我的UITableViewCell使用。 即使我在界面生成器中将类名更改为UITableViewCell的子类,我的button上的事件仍然没有触发。 由于它最初是一个UIView ,IB从来不知道有关contentView ,并没有添加我的控制。

将一个“真正的” UITableViewCell拖到xib中,将它的类更改为我想要的类,然后重新连接IBOutlets修复所有的问题。 不需要delaysContentTouches或其他属性。

故事的道德:把正确的东西拖到你的xibs上。

这似乎是,当你使用接口生成器来定制一个单元格子类时,所有添加的视图都添加到contentView下面。 这就是为什么在内容视图上设置userInteractionEnabled = NO的原因,因为触摸事件是允许通过的。

我用lldb的po [view recursiveDescription]来确定这个。