【发布时间】: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