在开发拖放iOS11功能以允许在应用程序之间发送和接收数据时,我遇到了问题。
在视图控制器的tableView中,将dragDelegate
上的dropDelegate
和viewDidLoad
分配给视图控制器本身,我实现了
- (NSArray<UIDragItem *> *)tableView:(UITableView *)tableView itemsForBeginningDragSession:(id<UIDragSession>)session atIndexPath:(NSIndexPath *)indexPath
方法,但从未被调用。
放置行为正常运行,并且表格视图可以使用其他应用程序中的项目,例如照片或便笺。但是,当我点击表格视图行几秒钟时,什么也没发生。不会出现提升动画,也不会触发拖动委托。
有什么想法吗?我有什么需要的吗?
答案 0 :(得分:0)
请尝试在下面的委托方法中对单元格进行重新排序。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleNone;
}
在您的项目中实现以下UITableView数据源方法。
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
[dataArray exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
[self.tableView reloadData];
}
答案 1 :(得分:0)
在iPhone上,除了设置dragDelegate
之外,还必须将dragInteractionEnabled
上的UITableView
设置为true。在iPad上,默认情况下将此属性设置为true。