2011-12-07 7 views
1

私はuiscrollviewに多くのuiimageviewを持っています。私は、uiscrollviewからuiimageviewをドラッグしようとしています。私はサブクラス化されたuiscollviewを持っていて、スクロールドラッグイベントのスクロールビュースーパークラスとスクロールイベント以外のメインビューコントローラクラスのタッチメソッドにタッチを渡すために、custon touchbegan、toucmovedおよびtouchendedメソッドを書いています。 uiimageviewをuiscrollviewからドラッグするにはスーパービュー(scrollview)から削除し、touchbeganメソッドでmainviewに追加します。 私のuiimageviewはスクロールビューから削除され、mainviewに正常に追加されます。 ここでの問題は、最初のタッチでは私のtouchbeganメソッドが呼び出されますが、私はuiimageviewを動かすとtouchmovedメソッドが呼び出されません。私はUIImageViewクラスをサブクラス化し、touchbeganを書いて、touchmovedとuiimageviewサブクラス内のメソッドをtouchended今ではworking.Previously私はタッチを使用していたされています。以降すべての作品のn uiimageviewはscrollviewにUIScrollviewからUIImageviewをドラッグする

アップデートを引きずり出される2回目のタッチで メインビューのメソッドは、タッチメソッドもUIScollviewのタッチを検討していた。しかし、今はuiimageviewsに触れるだけで検討されています。私はもう一つの変更を追加しました:私はtouchbeganでのスクロールを無効にし、それを有効にしました。 Thanx

答えて

1

スクロールビュー内にあるuiImageViewを移動せずに(コントロールビューコントローラ内で)重複したビューを作成し、それをタッチで移動してからメインビューに追加してから続いてオリジナルを取り除く。

このアプローチは、ユーザーが途中で気を変えてしまって、結局それをドラッグしないと決めた場合にも優れています。

EDIT: 自分のアプリをチェックして、私がしていることをリフレッシュしました。私もtouchesMovedを取得しないか、元のアイテムで終了しました。私は、スライドビューのそれぞれのビューにジェスチャ認識機能を持っています。この機能が起動すると、ドラッグが処理中であることをデリゲート(スクロールビューの親であるビューコントローラ)に通知します。私がするCGPointを取得し、それに応じて行動することができます渡されたオブジェクトから:

UILongPressGestureRecognizer *myRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(drag:)]; 
[myRecognizer setDelegate:self]; 
[myItemInsideScrollView addGestureRecognizer:myRecognizer]; 


-(void)drag:(UILongPressGestureRecognizer *)sender { 
    [self.view bringSubviewToFront:[(UILongPressGestureRecognizer*)sender view]]; 
    CGPoint translatedPoint = [sender locationInView:self.view]; 

    // if we are not already dragging we create the duplicate view 
    // if we are already dragging just update the location of the duplicate view 

    // next check if drag has ended and if so call a method to do what we want 
    if (dragging) { 
     if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 
      [self checkForDragRelease:(CGPoint)translatedPoint]; 
     } 
    } 

} 
+0

私はoldviewを解放するメインviewand内の同じ位置に新しいビューを作成しようとしたが、それでも問題が解消されません。タッチイベント - メソッドはnewviewで呼び出されません – user1085093

関連する問題