UITableView(在UIScrollView中)didSelectRowAtIndexPath:第一次点击时没有调用

时间:2014-11-21 19:34:47

标签: ios objective-c iphone uitableview uiscrollview

我在UITableView内有一个不可滚动的UIScrollView。而我遇到的问题是,当我触摸一行时,第一次点击时没有调用回调didSelectRowAtIndexPath:,但是在第一次点击任务工作之后。

一些注意事项:

  • 第一次点击后,表格视图正常工作,每个单元格都有效。
  • 这是在我滚动UIScrollView之后发生的。如果我不滚动UIScrollView,这种情况永远不会发生。
  • 我已经覆盖了UIScrollView的touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view,并且事件确实在此处传递,view有效地为UITableViewCellContentView

我只是不知道为什么第一次没有将事件发送到UITableView,而是以下事件发送到{{1}}。

2 个答案:

答案 0 :(得分:2)

如果您的UIScrollView包含垂直内容且UITableView作为此内容的一部分,则必须至少禁用UITableView上的滚动 - 否则会让用户感到困惑当他将滚动您的mainViewtableView时,并且还会混淆框架,因为它不清楚在哪里发送平移手势。

根据经验,你应该避免在scrollViews内放置表格视图,除非你真的知道你在做什么。

答案 1 :(得分:0)

请禁用滚动表视图并检查数据源和委托是否已连接到表视图。如果不遵循以下代码

@interface myClass ()<UITableViewDataSource, UITableViewDelegate>

- (void)viewDidLoad {
    [super viewDidLoad];

    self.myTableView.scrollEnabled = NO;
    self.myTableView.delegate = self;
    self.myTableView.dataSource = self;
}