0

私は現在ドラッグアンドドロップ機能に取り組んでおり、幸運にも良いチュートリアルを見つけました。このプロジェクトの目標は、の助けを借りて、あるテーブルビューから別のテーブルビューに「アイテム」をドラッグアンドドロップすること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]];

これは簡単に聞こえるかもしれませんが、長押しを行うと、ドラッグ可能なセルが選択したセルの元の位置よりも少し高く表示されるはずです。

教えてください:)ありがとう!

4

1 に答える 1

0

実際には、スーパービューに関して中心点を変換する必要があります。その場合は、これらの方法のいずれかを使用する必要がありますconvertPoint: fromView:convertPoint: toView:詳細については、このリンクを参照してください。

お役に立てればと思います。

于 2012-07-16T09:54:04.143 に答える