我无法重新排列tableView
中的行。该表处于编辑模式,并且所有相关方法都被覆盖以返回YES
:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
NSLog(@"From: %d to: %d", fromIndexPath.row, toIndexPath.row);
// some code to modify the dataSource
// ...
}
当重新排列控件显示时,如果我尝试拖动它,它只会稍微移动一行,然后moveRowAtIndexPath:toIndexPath:
被调用fromIndexPath
和{{1是一样的!
经过进一步检查后,有时我设法快速向上或向下轻拂该行以使其实际工作,但一次只移动一行。
我有另一个应用程序,我可以缓慢而轻松地重新排列行,但是一旦我开始拖动,它似乎想要在几分之一秒后提交更改,所以如果我没有移动它足够远,它只是跳回原来的行。是什么导致了它?
答案 0 :(得分:0)
经过仔细考虑后,我意识到这个问题是由于应用的UI层,而不是tableView
配置。罪魁祸首是我添加到应用程序的侧边菜单模块,默认情况下会添加UIGestureRecognizer
以检测用户何时滑动屏幕以显示侧面的菜单。它干扰了tableView
的默认手势识别器,一旦禁用,一切正常。使用第三方库时要注意这些不良副作用:)