问题描述
我正在为Xamarins UITableView编写自定义渲染,该渲染允许拖放。 我实现了UITableViewDragDelegate和DropDelegate。
当我在DropSessionDidUpdate函数中使用UIDropOperation.copy时,一切正常,因为随后调用PerformDrop。问题是“复制”在拖动时将这个讨厌的+图标添加到单元格中,这是我不想拥有的。 如果我返回UIDropOperation.Move,则+图标消失了。但是然后不再调用PerformDrop。
我发现了一些可能出问题的提示,例如清洁一下: UIDropInteractionDelegate performDrop not called? 在同一篇文章中,一个答案解释说,仅在session.allowsMove为true时才能使用Move。 因此,我在数据源中实现了CanMoveRow:
public override bool CanMoveRow(UITableView tableView,NSIndexPath indexPath)
{
return true;
}
但这并不能解决问题。至少我可以确认session.allowsMove现在总是正确的。 在MacOS的另一个线程(我丢失了链接)中,据说如果UIDragItem的NSItemProvider没有关联的对象,执行删除将不起作用。因此,我为Forms对象实现了一个包装器,并将其分配给NSItemProvider:
public override UIDragItem[] GetItemsForBeginningDragSession(UITableView tableView,iuiDragSession session,NSIndexPath indexPath)
{
if (list.ItemsSource is IList source) //List is the instance of the Xamarin Forms ListView
{ //Check is always fulfilled
var item = NSObjectWrapper.Wrap(source[indexPath.Row]);
var itemProvider = new NSItemProvider(item,item.GetType().ToString());
var dragItem = new UIDragItem(itemProvider);
dragItem.LocalObject = item;
return new UIDragItem[] { dragItem };
}
return null;
}
但是,仍然没有变化。
我在做什么错,我该如何采取行动进行放下操作,或者如何摆脱复制视图中的+图标?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)