Ios 如何识别ImageView中不同位置的不同操作?

Ios 如何识别ImageView中不同位置的不同操作?,ios,objective-c,imageview,Ios,Objective C,Imageview,我有一个地图图像,其中有一些状态,现在的情况是,如果我点击任何一个特定的状态,它将显示该状态的名称作为一个弹出视图 我的问题是,当我在地图图像中点击不同的状态位置时,如何识别不同的操作。将状态名称覆盖在地图的顶部 当用户点击州名称时,您将知道他们点击的是哪个州 还是不想在地图上显示州名 您可以将状态分解为单独的PNG图像,并小心地放置它们以使地图看起来无缝。将图像指定给UIButtons 同样的想法。试试这个: 将点击手势识别器添加到图像视图中 UITapGestureRecognizer *

我有一个地图图像,其中有一些状态,现在的情况是,如果我点击任何一个特定的状态,它将显示该状态的名称作为一个弹出视图


我的问题是,当我在地图图像中点击不同的状态位置时,如何识别不同的操作。

将状态名称覆盖在地图的顶部

当用户点击州名称时,您将知道他们点击的是哪个州

还是不想在地图上显示州名

您可以将状态分解为单独的PNG图像,并小心地放置它们以使地图看起来无缝。将图像指定给UIButtons

同样的想法。

试试这个:

将点击手势识别器添加到图像视图中

UITapGestureRecognizer * tapOnMap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showStatePopUp:)]; 
tapOnMap.delegate = self;
[yourMapImageView addGestureRecognizer:tapOnMap];
在方法showstatepoop中:

-(void) showStatePopUp:(UITapGestureRecognizer *)sender
{
    UITapGestureRecognizer *tap = (UITapGestureRecognizer *)sender;
    CGPoint point = [tap locationInView: yourMapImageView];
    NSLog(@"tapped location x:%f, y:%f",point.x,point.y);
}

现在,你有了定位点。接下来,根据这些要点处理不同的操作。

是的,我想到了这个逻辑。但州太多了。创建100到200个按钮不是一个好主意。我看,那么你需要一个更健壮的解决方案。我有个主意。也许您可以在X、Y屏幕坐标中为每个州定义一个“中心点”(假设地图不可缩放),然后获取用户的点击位置,并将点击位置与州中心点阵列中的每个元素进行比较,以查看哪一个是最短距离。然后你就会知道哪个州被窃听了。关于如何获取点击位置,请参阅raki的答案。我认为,为此,我必须设置100到200个条件:(其他方面,如何获得100到200个州的信息弹出?……如果您想让这变得更好,请使用地图