我目前正在研究拖放功能,幸运的是我找到了一个很好的教程。这个项目的目标是在UILongPressGestureRecognizer
. 正如我从中了解到的那样,您必须获得您选择的单元格的“快照”才能获得将某些东西从表格中拖出的感觉。我认为,下面是执行此操作的方法。
- (void)dragAndDropTableViewController:(DragAndDropTableVC *)ddtvc draggingGestureWillBegin:(UIGestureRecognizer *)gesture forCell:(UITableViewCell *)cell
{
// create a snapshot of the cell
NSLog(@"draggable delegate method is called");
UIGraphicsBeginImageContext(cell.contentView.bounds.size);
[cell.contentView.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *cellImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *cellImageView = [[UIImageView alloc] initWithImage:cellImage];
self.dragAndDropView = [[UIView alloc] initWithFrame:cellImageView.frame];
[self.dragAndDropView addSubview:cellImageView];
[self.dragAndDropView setBackgroundColor:[UIColor blueColor]];
[self.dragAndDropView setCenter:[gesture locationInView:self.view.superview]];
[self.view.superview addSubview:self.dragAndDropView];
}
基本上,在获取单元格的“快照”后,您必须将其添加为 UIView 的子视图。让我烦恼的是这部分。
[self.dragAndDropView setCenter:[gesture locationInView:self.view.superview]];
这听起来很容易,但我想做的是当长按完成时,可拖动的单元格应该比所选单元格的原始位置高一点。
请启发我:)谢谢!