我对“拖放”有几乎相同的问题。首先,您需要尝试拖动的不是表格而是单元格。第二点是超时。像往常一样,应用程序对拖动(触摸并按住)有超时反应。此操作可能需要 1 或 2 秒。尝试增加 dragFromToForDuration 的超时参数。对于我的应用程序,设置 6 - 8 秒就足够了。
尝试实现您自己的函数,该函数将采用 2 个参数。第一个参数 - 要拖动的单元格对象。第二个参数 - 您拖动单元格的另一个单元格对象将被删除。请注意,仅当FROM和TO对象都在屏幕上可见时,此功能才有效。
function reorderCellsInTable(from, to)
{
if ( from.checkIsValid() && to.checkIsValid() )
{
if ( !from.isVisible() )
{
from.scrollToVisible();
//put 1 second delay if needed
}
var fromObjRect = from.rect();
// setting drag point into the middle of the cell. You may need to change this point in order to drag an object from required point.
var sourceX = fromObjRect.origin.x + fromObjRect.size.width/2;
var sourceY = fromObjRect.origin.y + fromObjRect.size.height/2;
var toObjRect = to.rect();
// setting drop point into the middle of the cell. The same as the drag point - you may meed to change the point to drop bellow or above the drop point
var destinationX = toObjRect.origin.x + toObjRect.size.width/2;
var destinationY = toObjRect.origin.y + toObjRect.size.height/2;
UIATarget.localTarget().dragFromToForDuration({x:sourceX, y:sourceY}, {x:destinationX, y:destinationY}, 8);
}
}
例如,您有 5 个单元格。您需要拖动第二个并将其放在最后。函数调用示例:
var cellToReorder = tableView()[<your table view>].cells()[<cell#2NameOrIndex>];
var cellToDrop = tableView()[<your table view>].cells()[<cell#5NameOrIndex>];
reorderCellsInTable(cellToReorder, cellToDrop);