如何检索用户点击(或触摸)的特定UIImageView?

时间:2014-03-30 04:54:56

标签: ios objective-c uiimageview

我的单个视图中有多个UIImageViews。我需要单击一个(比如ImageView1),然后单击视图上的空白区域。在第二次单击时,分配给ImageView1的图像应出现在此位置,并从第一次单击的位置消失。

示例:在下棋时,用户点击女王,然后点击(允许的移动)空插槽。女王应该搬到新的地方。类似的方式。

我应该使用TapGestures,UIControl还是UIButton?

我试图使用TapGestures的touchesBegan - 但这只有在我只有一个UIImageView时才有用。 [我不关心自动移动,所以我忽略了touchesMoved]。

当有多个ImageView时,当用户点击ImageView时,我如何知道用户点击了哪个Image?

3 个答案:

答案 0 :(得分:2)

这里实际上有两个问题:

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!!!");
}

答案 1 :(得分:0)

您可以为图片视图添加手势识别器..

答案 2 :(得分:0)

我不知道您之前尝试了什么,但有一种方法'didselectitematindexpath',您也可以使用点按手势。