Ios 禁用滚动的UITableView的行选择不佳且闪烁

Ios 禁用滚动的UITableView的行选择不佳且闪烁,ios,uitableview,row,selection,Ios,Uitableview,Row,Selection,我有一个UITableView作为UIViewController的实例变量,它也是一个UITableViewDelegate和UITableViewDataSource。表格是固定的,并且比屏幕高度短,因此禁用滚动。行选择工作,如果你对待它非常温和-一个坚定的新闻没有滑动直接对行是好的 但是,任何形式的快速点击、滑动或多点触摸都会导致行闪烁,并且不会发送对didSelectRowAtIndexPath的调用。例如,如果选择了第0行并当前高亮显示,则当您按下第2行时,它将高亮显示,然后向下拖动到

我有一个UITableView作为UIViewController的实例变量,它也是一个UITableViewDelegate和UITableViewDataSource。表格是固定的,并且比屏幕高度短,因此禁用滚动。行选择工作,如果你对待它非常温和-一个坚定的新闻没有滑动直接对行是好的

但是,任何形式的快速点击、滑动或多点触摸都会导致行闪烁,并且不会发送对didSelectRowAtIndexPath的调用。例如,如果选择了第0行并当前高亮显示,则当您按下第2行时,它将高亮显示,然后向下拖动到第3行,不会高亮显示任何内容,并且在抬起手指时,第0行高亮显示

这能改进吗?这是预期的行为吗?不管怎么说,故意拖拽可能是故意取消,但快速点击是我宁愿捕捉到的比现在看起来更可靠的东西

下面是我设置tableview的代码:

tableView2 = [[UITableView alloc]initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + HEADERANDFOOTERHEIGHT,
                                                          LEFTIMPORTWIDTH, self.view.frame.size.height - HEADERANDFOOTERHEIGHT * 2)];

[tableView2 setDataSource:self];
[tableView2 setDelegate:self];
tableView2.scrollEnabled = NO;
tableView2.exclusiveTouch = YES;
tableView2.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bkg_ptn_darkgraynoise.png"]];
[tableView2 setSeparatorStyle: UITableViewCellSeparatorStyleNone];
[tableView2 setRowHeight:52.0f];
[self.view addSubview:tableView2];

但我不认为这段代码有什么奇怪的地方。我想这只是我期望比默认行为更好的性能的一个例子?

最后我将启用滚动。即使菜单永远不需要滚动,但如果你不小心在菜单上拖动手指,会发生一些事情,这会让你感觉更直观


如果我再做一遍,我可能会让它成为一个按钮列表,而不是一个UITableView,但这是一个相对较小的问题。

什么是
exclusiveTouch
主要是为了改进/改变这种行为,以确保tableview是用户唯一的交互对象。这是不必要的,但删除它不会改变行为。我越来越倾向于这样做,因为它实际上是按照预期的方式工作的。