我很确定我的问题的答案很简单,但经过几个小时的反对,我转向你......
我有一个带UISearchBar的UITableView。搜索似乎工作得很好,但是当我搜索并点击一个单元格时,我得到了可见单元格的IndexPath,而不是单元格相对于整个UITableView的坐标。
现在,我很确定我的问题在于/我正在使用手势而不是didSelectRowAtIndex,因为我需要处理单击和双击。我已将手势识别器附加到视图中。
单击/双击识别器获取所选的表格单元格:
CGPoint location = [gesture locationInView:self.tableView];
NSIndexPath *cellIndexPath = [self.tableView indexPathForRowAtPoint:location];
我的UITableView的大小适合在需要滚动之前显示大约8行。如果没有在UISearchBar中输入文本,这可以正常工作(两种手势)。如果我滚动到UITableView的第15行并点击,则cellIndexPath会返回第15行。
但是,如果我输入一个需要用户滚动的搜索词,则点击第一个屏幕后面的任何单元格会返回相对于其当前可见位置的行的cellIndexPath(这意味着如果我滚动到第10行并且将它定位到UITableView的最后一行,点击给出一个8的行索引。
所以,基本上,我试图弄清楚为什么在不搜索UITableView与输入搜索词时行为不同。
感谢您的帮助, 罗布
答案 0 :(得分:2)
CGPoint location;
NSIndexPath *cellIndexPath;
if (self.isSearching)
{
location = [gesture locationInView:self.searchDisplayController.searchResultsTableView];
cellIndexPath = [self.searchDisplayController.searchResultsTableView indexPathForRowAtPoint:location];
}
else
{
location = [gesture locationInView:self.tableView];
cellIndexPath = [self.tableView indexPathForRowAtPoint:location];
}