事实上,根本不要使用轻击手势。
秘诀就是使用imageView的superview。
你需要3个图像视图......
UIImageView *ImageViewA
UIImageView *ImageViewB
UIImageView *DraggableImageView
假设您单击屏幕并且主机视图收到一个 touchesBegan 事件...如果您使用 ImageViewA 并使用以下方法测试它的 rect:
[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 并适当地设置新的图像视图......
祝你好运!和快乐的编码!