iOS11拖动行为在UITableView中不起作用

时间:2018-07-03 07:58:17

标签: ios uitableview drag-and-drop ios11

在开发拖放iOS11功能以允许在应用程序之间发送和接收数据时,我遇到了问题。

在视图控制器的tableView中,将dragDelegate上的dropDelegateviewDidLoad分配给视图控制器本身,我实现了

- (NSArray<UIDragItem *> *)tableView:(UITableView *)tableView itemsForBeginningDragSession:(id<UIDragSession>)session atIndexPath:(NSIndexPath *)indexPath方法,但从未被调用。

放置行为正常运行,并且表格视图可以使用其他应用程序中的项目,例如照片或便笺。但是,当我点击表格视图行几秒钟时,什么也没发生。不会出现提升动画,也不会触发拖动委托。

有什么想法吗?我有什么需要的吗?

2 个答案:

答案 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。