如何解决在DropPoposal为MoveXamarin时不调用UITableViewDropDelegate PerformDrop
我正在为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 举报,一经查实,本站将立刻删除。