【问题标题】:How to check whether a CGPoint is inside UIImageView multiple times dynamically如何动态检查CGPoint是否在UIImageView内多次
【发布时间】:2014-08-05 04:57:39
【问题描述】:

我是 Objective-C 的新手,所以如果我是一个完全的菜鸟,请给我一个方向。

我的问题是我有用户上传的图像显示在列表中,他们可以单击以执行修改/删除操作。下面的方法是一种非常繁琐的编程方式,但我似乎想不出一种在不完全重新处理图像处理的情况下动态执行此操作的方法......

- (void)tapImageView:(UITapGestureRecognizer *)sender
{
    UIImageView *imageView = (UIImageView *)sender.view;
    CGPoint point = [sender locationInView:imageView.superview];

    if (point.y > 35 && point.y < 135)
        imageIndexInteger = 0;

    else if (point.y > 168 && point.y < 268)
        imageIndexInteger = 1;

    else if (point.y > 301 && point.y < 401)
        imageIndexInteger = 2;
    //need to figure out how to do this dynamically for more than 3 images
}

我有一个存储上传图像的数组(在本例中称为 imageArray)

有什么想法吗?

【问题讨论】:

  • 你如何显示图像视图?将它们添加到子视图?最好使用 UICollectionView/UITableView 来列出图像视图,并使用它们的数据源和委托方法来捕捉点击
  • @Nithin 是对的。但我建议你应该使用 UITableView,这对你来说相对容易实现,因为你是 obj-c 的新手。另外,要像上面那样获得不同的水龙头。尝试制作带有选择器按钮的自定义 UITableViewCell 类,而不是像上面那样计算点击次数。

标签: ios objective-c uiimageview touch


【解决方案1】:

您尝试实现此目的的方式非常迂回。

对此的最佳解决方案可能是使用UICollectionViewUITableView 并将触摸处理为单元格选择,然后您可以获得单元格的索引。

如果你想让你的代码保持现在的样子,最快的方法是为每个图像视图分配一个标签,如下所示:

myImageView.tag = 5;

那么就可以这样获取标签了:

- (void)tapImageView:(UITapGestureRecognizer *)sender
{
    UIImageView *imageView = (UIImageView *)sender.view;
    imageIndexInteger = imageView.tag;
}

【讨论】:

  • 提供的快速破解效果很好。当我有时间时,我将对 UITableView 进行更改,但由于我正在编辑另一个人为此部分创建的代码,因此需要很长时间。谢谢@Dima
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多