2011-11-04 12 views
2

をImageViewのをドロップする可能性の重複:私のiPadで
how to drag an uiimage from scrollview to another uiimageview in iphone sdkIOS:ドラッグし、ビューにscrollviewから

私はビューを持っており、その中に、左に、私が持っています10個のimageViewを持つスクロールビュー。私はこれらの画像をスクロールビューから大きなサブビューにドラッグ&ドロップする必要があります。どうすればいい?

答えて

4

あなたは一度説明したようなことをしました。私はそれを取り除くことを忘れないで私はUIDownwardDragGestureRecognizerと呼ばれる新しいUIGestureRecgonizerを作りました。あなたは、このセットアップを持っていたら、あなたはような何かを行うことができるはず

UIDownwardDragGestureRecognizer *downwardGesture = [UIDownwardGestureRecognizer alloc] initWithTarget:self action:@selector(downwardGestureChanged:)]; 
[myScrollview addGestureRecognizer:downwardGesture]; 
for (UIGestureRecognizer *gestureRecognizer in myScrollview.gestureRecognizers) 
{ 
    [gestureRecognizer requireGestureRecognizerToFail:myDownwardGesture]; 
} 

:私は、その後のように失敗するUIDownwardGestureRecognizerのを待つためにそれらを必要とするscrollviewsジェスチャー認識装置を通じて反復考える

- (void) downwardGestureChanged:(UIDownwardDragGestureRecognizer*)gesture 
{ 
    CGPoint point = [gesture locationInView:myScrollView]; 
    if (gesture.state == UIGestureRecognizerStateBegan) 
    { 
     UIView *draggedView = [myScrollView hitTest:point withEvent:nil]; 
     if ([draggedView isTypeOfClass:[UIImageView class]]) 
     { 
     self.imageBeingDragged = (UIImageView*)draggedView; 
     } 
    } 
    else if (gesture.state == UIGestureRecognizerStateChanged) 
    { 
     self.imageBeingDragged.center = point; 
    } 
    else if (gesture.state == UIGestureRecognizerStateEnded  || 
      gesture.state == UIGestureRecognizerStateCancelled || 
      gesture.state == UIGestureRecognizerStateFailed) 
    { 
     // Determine if dragged view is in an OK drop zone 
     // If so, then do the drop action, if not, return it to original location 

     self.imageBeingDragged = nil; 
    } 
} 

UIGestureRecognizerStateBeganでは、UIImageViewを見つけると、それをスーパービュー(scrollview)から削除し、別のコンテナにサブビューとして追加することができます。これを行う場合は、ポイントを新しい座標空間に変換する必要があります。元の画像をスクロールビューに残したい場合は、元の画像をコピーして外側のコンテナに追加します。

上記の例を試してみましょう。上の例ではUIImageViewをscrollview内からドラッグしているので、スクロールビューのクリッピングをオフにする必要があるかもしれません(普通は、ビュー)。

+0

あなたは私をもっと助けますか?あなたは私にscrollViewからotherviewまたはそのプリンシパルビューに画像ビューをドラッグする例を教えていただけますか? – CrazyDev

+0

基本的なドラッグの概念を含む修正された答え。 – Sam

+0

ありがとう私はあなたのコードを試してみるつもりです。 – CrazyDev

1

私は、オーバーレイレイヤーを使用してタッチをキャプチャして渡すことでこれが行われていることを見てきました。これにより、UIScrollViewがクリックを消費する前にクリックをインターセプトできます。

Here is the demo videoセルをドラッグしてドロップする可能性のあるUITableView(スクロールビュー内)を作成しようとしたときに見たものです。

また、これはどの程度適用可能かわかりませんが、here is a similar post私は数日前に作成しました。

この問題をもう少し見直して、前に述べたビデオと同様に、UITableViews間でセルをドラッグアンドドロップできるようにしました。私のチュートリアルはhereです。結果はin this YouTube videoです。この方法では、iOS 5の最新のジェスチャー機能を使用して、長押しでセルをポップします。

あなたは、ここで役立つものを見つけることができますか?

+0

+1非常にクールなビデオ。良いコンセプトのように見える – Sam

+0

うわー、ビデオは素晴らしい例ですが、それはとても複雑です。私は単純なコントロールを作成する必要があります。 – CrazyDev

関連する問題