【问题标题】:UITableView with scrolling disabled has poor, flickering row selection禁用滚动的 UITableView 的行选择很差,闪烁
【发布时间】:2013-04-12 06:36:52
【问题描述】:

我有一个 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];

但我认为这段代码没有什么奇怪的地方。我认为这只是我期望比默认行为更好的性能的一种情况?

【问题讨论】:

  • exclusiveTouch 是干什么用的?
  • 主要是为了改善/改变这种行为,以确保 tableview 是用户唯一与之交互的东西。这是不必要的,但删除它不会改变行为。我越来越倾向于这实际上是按预期工作的。

标签: ios uitableview row selection


【解决方案1】:

最后我要启用滚动。即使菜单永远不需要滚动,但如果您不小心沿着菜单拖动手指,就会感觉更直观。

如果我再次这样做,我可能会将其设为按钮列表而不是 UITableView,但这是一个相对较小的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2010-11-17
    • 2015-07-22
    • 1970-01-01
    • 2016-03-19
    • 2020-12-13
    • 2018-06-20
    相关资源
    最近更新 更多