不要使用自來水的手勢在所有的事實。
祕訣就是使用imageView的superview。
您需要3圖像視圖的....
UIImageView *ImageViewA
UIImageView *ImageViewB
UIImageView *DraggableImageView
假設你點擊屏幕和主機觀點得到了的touchesBegan事件......如果你把ImageViewA並測試它的矩形與下面的方法:
[rect containsPoint:touchPoint];
如果這是真的,你已經成功地觸動了第一ImageView的...開始在touchesMoved的拖動操作像如下:
如果你拿ImageViewA.superview你會得到視圖的主視圖...主視圖應該再收到以下命令:
[newDraggableImageView setFrame:ImageViewA.frame];
[newDraggableImageView setImage:ImageViewA.image];
[hostView addSubview:newDraggableImageView];
現在你跟蹤與UIResponder方法touchesBegain touchesMoved主視圖觸摸事件和touchesEnded
當你經歷touchesMoved:將運動的座標發送到newDraggableImageView的框架中...
因爲它正在拖動...一項所述的方法touchesEnded:
如果圖像的幀爲第二拖動點的框內然後可以設置最終圖像視圖
if ([frame containsRect:anotherFrame])
ImageViewB.image = draggableImageView.image;
對不起這是僞代碼...希望你瞭解邏輯流程...將圖像添加到主機視圖...或應用程序的窗口視圖並移動它...一旦移動結束..測試imageView的位置並適當設置新的圖像視圖。 ..
GOODLUCK!和快樂編碼!
好,知道了!謝謝。我還有一個疑問是,在這種情況下,如何將兩個圖像視圖移動(交換)到指定的交換位置。 – Getsy 2013-02-19 20:25:29
@Getsy查看示例代碼。請注意,如果您在「NSArray」中獲得圖像視圖,則這類內容總是會簡化,因此您可以通過它們快速枚舉。 – Rob 2013-02-19 21:19:46