У меня была почти такая же проблема с «Drag and Drop». Прежде всего вам нужно попытаться перетащить в него не таблицу, а ячейку. Второй момент - это тайм-аут. Как обычно, у приложения есть тайм-аут для реакции на перетаскивание (коснитесь и удерживайте). для этой операции может потребоваться 1 или 2 секунды Попробуйте увеличить параметр времени ожидания для dragFromToForDuration. Для моего приложения достаточно было установить 6 - 8 секунд.
Попробуйте реализовать собственную функцию, которая будет принимать 2 параметра. Первый параметр - объект ячейки, который вы хотите перетащить. Второй параметр - другой объект ячейки, куда вы перетащили ячейку, будет отброшен. Обратите внимание, что эта функция будет работать только , если оба объекта ОТ и ДО будут видны на экране.
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);