【问题标题】:UITableView does not respond to scrolling and touchesUITableView 不响应滚动和触摸
【发布时间】:2011-02-28 21:16:01
【问题描述】:

我创建了一个自定义 UIView,并在该 UIView 中添加了一个 UITableView,如下所示:

    treeView = [[UITableView alloc] initWithFrame:CGRectMake(0, 80, slider.frame.size.width, slider.frame.size.height - 80)];
    [treeView setDelegate:self];
    [treeView setDataSource:self];
    [self addSubview:treeView];
    [treeView release];

当应用加载时,表格似乎加载正常。但是,当我尝试滚动表格时,它根本不响应触摸。

我还实现了这些委托/数据源方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

有人知道为什么会这样吗?

谢谢

【问题讨论】:

    标签: ipad ios uitableview iphone-sdk-3.0 ios4


    【解决方案1】:

    有几种可能:

    • 您的自定义视图或其超级视图之一已将 userInteractionEnabled 设置为 NO。
    • 在您的自定义视图之上或自定义视图中的表格视图之上还有另一个视图。
    • table view 所在的自定义view 比table view 小(在clipsToBounds=NO 的情况下,可以看到超出其父级边界的子视图,但不能正常交互)。或者堆栈中的另一个视图也是如此。
    • 自定义视图(或其超级视图之一)错误地覆盖了pointInside:withEvent:hitTest:withEvent:

    【讨论】:

    • 非常感谢!我不小心将我的表格添加到了底部视图中。
    • 非常感谢,从 4 小时开始工作,表格视图内部的自定义视图小于表格视图(使用 clipsToBounds=NO,扩展超出其父级边界的子视图可以被看到但通常不会与之互动)。或者堆栈中的另一个视图也是如此。
    • 第三个是我造成的。我用init 而不是initWithFrame: 重点初始化了一个UIView,所以它比UITableView 小。
    【解决方案2】:

    确保在需要接收触摸事件的视图上 userInteractionEnabled 为 YES。也尝试在视图上调用 becomeFirstResponder 并在完成后调用 resignFirstResponder。抱歉,我没有更多详细信息,但我已经有一段时间没有这样做了。祝你好运!

    【讨论】:

      【解决方案3】:

      这是发生这种情况的另一个原因......

      UITableView 是框架小于表格视图的另一个视图的子视图。这似乎没有多大意义,但它可能发生!我有一个案例,tableview 的父级的宽度=0。

      这当然会导致 pointInside:withEvent: 或 hitTest:withEvent: 返回 NO!

      【讨论】:

        【解决方案4】:

        对我来说,我的 TabView 没有响应的原因是变换动画。我正在使用动画我的表格视图 view.layer.transform = CATransform3DMakeScale(0.5,0.5,0); 这是 3D 转换属性。我发现通过使用 2D 转换而不是 toVC.view.layer.affineTransform = CGAffineTransformMakeScale(0.5, 0.5); 然后我的表格视图会响应我的触摸和滚动。 我不确定根本原因是什么,但这是我的观察。

        【讨论】:

          【解决方案5】:

          也许有人会需要这个答案:

          让您的视图直接添加到单元格,而不是 cell.content

          这对我有用,当不使用表格中的单元格,而是使用普通视图时。 看来touch现在不会转发到contentView了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-05
            • 1970-01-01
            • 2012-01-19
            相关资源
            最近更新 更多