UITableView不响应滚动和触摸

时间:2011-02-28 21:16:01

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

我已经创建了一个自定义的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;

有谁知道为什么会这样?

由于

5 个答案:

答案 0 :(得分:21)

有几种可能性:

  • 您的自定义视图或其中一个超级视图的userInteractionEnabled设置为NO。
  • 您可以在自定义视图的顶部或自定义视图中的表格视图顶部显示另一个视图。
  • 表视图所在的自定义视图小于表视图(使用clipsToBounds = NO,可以看到超出其父级边界的子视图,但通常不会与之交互)。或者对于堆栈中的另一个视图也是如此。
  • 自定义视图(或其中一个超级视图)会错误地覆盖pointInside:withEvent:hitTest:withEvent:

答案 1 :(得分:0)

确保需要接收触摸事件的视图上的userInteractionEnabled为YES。也可以尝试在视图上调用becomeFirstResponder,并在完成后调用resignFirstResponder。对不起,我没有更多的细节但是我做了这个已经有一段时间了。祝你好运!

答案 2 :(得分:0)

这是它可能发生的另一个原因......

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

这对我有用,当不使用表中的单元格但使用普通视图时。 似乎此刻触摸不会转发到contentView。