我的单个视图上有多个UIImageViews。我需要单击一个(例如ImageView1),然后单击视图上的空白区域。第二次单击时,分配给 ImageView1 的图像应显示在此位置,并从第一次单击的位置消失。
示例:下棋时,用户单击女王,然后单击(允许移动)空插槽。女王应该搬到新的地方。类似的方式。
我应该使用TapGestures,UIControl还是UIButton?
我试图使用TapGestures的触摸开始 - 但这只有在我只有一个UIImageView时才有效。[我不关心自动移动,所以我忽略了 touchesMoved]。
当有多个图像视图时,当用户单击一个图像视图时,我如何知道用户单击了哪个图像?
这里实际上有两个问题:
1 - 实现与 UIViews 的交互时要使用什么?
好吧,答案取决于您希望实现的目标。
如果您想要一个简单的按钮功能(即单击),请使用 UIButton
.
如果要自定义控件的功能,请子类UIControl
并实现所需的功能。
如果您正在寻找低级黑客,则子类UIView
并覆盖相关方法。
2 - 如何检测点击了哪个视图?
有很多方法可以做到这一点。它们将以上述所有方式工作的一种方法是将标识整数分配给 UIView
tag
属性,然后在点击视图时查询 tag
属性并将其与您的视图进行比较。
例:
// Somewhere in your initialization code
// ...
[_myTappableView setTag:123];
识别分流器后:
if (tappedView.tag == 123)
{
NSLog("My Tappable View was tapped!!!");
}
您可以向图像视图添加手势识别器。
你以前尝试过什么,但是有一个方法'didselectitematindexpath',你也可以使用点击手势。