0

我目前正在使用的 iOS 应用程序:

RootViewController 通过连接到 UITableViewController

[self addChildViewController:tableVC];

将 tableVC.view 作为 rootViewControllers 视图的子视图。然后 RootVC 有一个 UIPanGestureRecognizer 用于动画显示表格左侧的平移。

这一切都很好,表格作为静态视图很棒,但是当你尝试开火时

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

通过点击一个单元格,它永远不会被调用。我已经检查过手势识别器是否意外注册了点击,但事实并非如此。

我是否需要以某种方式告诉 RootVC,当 tableView 在屏幕上时发送到子 UITableViewController?

4

1 回答 1

0

感谢rdelmar通过他关于使用 UITableView 超级视图的 clipToBounds 属性的建议帮助我解决了这个问题。

这表明通过平移显示的 UIView 没有响应任何触摸,因为它们超出了它们的超级视图的范围。

我通过添加另一个具有适当尺寸的视图“spanView”来封装所有子视图来解决这个问题。在此之后,他们按预期响应了触摸。

层次结构最终是:

                         -> leftTableView
RootVC.view - > spanView -> centerView
                         -> rightTableView

请注意,我必须创建 RootVC 的子视图来实现这一点,因为在 viewDidLoad iOS 将 rootVC.view 设置为设备屏幕的边界之后

于 2013-07-11T19:08:12.637 回答