「ドラッグアンドドロップ」でもほぼ同じ問題がありました。まず、テーブルではなくセルをドラッグしてみる必要があります。2点目はタイムアウトです。いつものように、アプリケーションにはドラッグ (タッチ アンド ホールド) に反応するためのタイムアウトがあります。この操作には 1 ~ 2 秒ほどかかります。dragFromToForDuration のタイムアウト パラメータを増やしてみてください。私のアプリケーションでは、6 ~ 8 秒に設定するだけで十分でした。
2 つのパラメーターを取る独自の関数を実装してみてください。最初のパラメーター - ドラッグするセル オブジェクト。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 つあるとします。2 番目のものをドラッグして最後に配置する必要があります。関数呼び出しの例:
var cellToReorder = tableView()[<your table view>].cells()[<cell#2NameOrIndex>];
var cellToDrop = tableView()[<your table view>].cells()[<cell#5NameOrIndex>];
reorderCellsInTable(cellToReorder, cellToDrop);