如何检查 CGPoint 是否在 UIImageView 内部?

2024-01-11

In touchesBegan:

CGPoint touch_point = [[touches anyObject] locationInView:self.view];

有数十个UIImageView周围,​​存储在NSMutableArray images。我想知道是否有一个内置函数来检查是否CGPoint(touch_point) 位于其中一张图像内,例如:

for (UIImageView *image in images) {
   // how to test if touch_point is tapped on a image?
}

Thanks

跟进:

由于未知的原因,pointInside永远不会返回 true。这是完整的代码。

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
      UITouch *touch = [touches anyObject]; 
        touch_point = [touch locationInView:self.view];
        for (UIImageView *image in piece_images) {
            if ([image pointInside:touch_point withEvent:event]) {
                image.hidden = YES;
            } else {
                image.hidden = NO;
            }
            NSLog(@"image %.0f %.0f touch %.0f %.0f", image.center.x, image.center.y, touch_point.x, touch_point.y);
        }
    } 

虽然我可以看到这两点有时是相同的NSLog output.

我也尝试过:

  if ([image pointInside:touch_point withEvent:nil]) 

结果是一样的。永远不会返回 true。

消除任何与图像相关的可能性。我尝试了以下方法:

  if (YES or [image pointInside:touch_point withEvent:event])

第一次点击屏幕后,所有图像都会隐藏。

EDIT 2:

真奇怪。即使我硬编码了这个:

        point.x = image.center.x;
        point.y = image.center.y;

代码变为:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
        UITouch *touch = [touches anyObject]; 
        CGPoint point; // = [touch locationInView:self.view];
        for (UIImageView *image in piece_images) {
            point.x = image.center.x;
            point.y = image.center.y;       
            if ([image pointInside:point withEvent:event]) {
                image.hidden = YES;
                NSLog(@"YES");
            } else {
                image.hidden = NO;
                NSLog(@"NO");
            }
            NSLog(@"image %.0f %.0f touch %.0f %.0f", image.center.x, image.center.y, point.x, point.y);
        }
    }

pointInside总是返回false ...


在我看来,问题是您需要将坐标从视图坐标转换为UIImageView的坐标。您可以使用UIView's convertPoint method.

尝试更换

if ([image pointInside:touch_point withEvent:event]) {

with

if ([image pointInside: [self.view convertPoint:touch_point toView: image] withEvent:event]) {

(请注意,您可以通过nil代替event.)

我想这对提问者来说有点晚了,但我希望它对某人有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 CGPoint 是否在 UIImageView 内部? 的相关文章

  • 新的 XCode 模板等效项

    我正在学习 iPhone 的 Objective C 目前最大的障碍是大多数旧教程都不是基于 ios5 的 一般来说 这很好 因为在 ios5 被采用之前我还不想使用故事板 所以如果我忽略垃圾收集指令 教程就很好 然而 我遇到的问题是 大多
  • 在 didSelectRowAtIndexPath 访问自定义标签属性

    我在 cellForRowAtIndexPath 处的每个单元格都有一个 UILabel UILabel cellLabel UILabel alloc initWithFrame frame cellLabel text myString
  • 如何有效地将图像从服务器加载到tableView?

    我有一个表格视图 其中所有单元格都有 UITableViewCellStyleSubtitle 所有细胞的图像均从服务器获取 然而 这些图像并不经常改变 有人可以告诉我如何改善用户体验吗 每次用户向下滚动表格时 就好像它再次上网检查和下载图
  • 自定义 UITableViewCell 不显示故事板中的标签

    在此屏幕截图中 您可以看到我已在 UIViewController 中添加了 UITableView 然后通过在其中添加一些标签来自定义 UITableViewCell 但问题是当我运行应用程序时 所有单元格都是空的 根本没有标签 我不明白
  • 设置捆绑包中组的标题页脚

    How can I leave a message under group type in Setting bundle something like this 它记录在这里 https developer apple com librar
  • iphone MPMoviePlayerViewController CGContext 错误

    我正在为 iPhone 编写一个应用程序 可以使用它来播放一些电影MPMoviePlayerViewController 到目前为止 我已经让它可以播放电影了 但是它在调试器中抛出了一些错误 这些错误都以CGContext 我绞尽脑汁试图修
  • 重构函数错误 - “不是此工作区中 Xcode 3 项目中任何目标的构建阶段的一部分,因此无法重构”

    尝试通过 XCode 4 1 中类别的 h 文件中的 refactor gt rename 按钮重命名函数的名称 我收到此错误 错误和正文 UINavigationController ZG h 不属于此工作区中 Xcode 3 项目中任何
  • Objective C iPhone 何时将对象引用设置为 nil

    我使用 Objective C 和 Cocoa 框架进行开发已经有一段时间了 然而 我仍然不太清楚 我什么时候应该将对象引用设置为 nil 我知道建议在释放具有委托的对象之前执行此操作 并且您还应该在保留子视图的 viewDidUnload
  • 为自定义 CALayer 属性设置动画

    我试图根据现有的图层属性位置定义一个抽象图层属性角度 基本上它描述了层从圆心开始的方向 我确实喜欢以下内容 interface MenuItemLayer CALayer property CGFloat angle end impleme
  • 取消按钮和 UIActionSheet 的问题

    如何确定 UIActionSheet 上的取消按钮是否被按下 我的 UIActionSheet 设置如下 IBAction fileButtonPressed UIActionSheet mymenu UIActionSheet alloc
  • iOS 应用程序和.NET 应用程序之间的通信?

    我有 2 个应用程序 一个是 iOS 应用程序 一个是 NET 应用程序 我希望我的 iOS 应用程序发送一条消息 调用 NET 应用程序的方法 将一些字符串发送到 NET 应用程序以保存到数据库 那么 我的 iOS 应用程序如何与 NET
  • 具有硬件集成的 iOS 应用程序

    我想开发一个使用外部硬件插件的 iOS 应用程序 有点像 Squarehttps squareup com https squareup com 但是我在苹果的文档中找不到任何参考资料 有人能指出我正确的方向吗 如果您想使用 iPod 连接
  • iPhone - 动画视图控制器演示

    我有一个 UINavigationControl 我想呈现一个视图控制器 将其从顶部推送 并将其从视图中删除 将其推送到顶部 有没有办法更改调用时使用的默认动画 self navigationController pushViewContr
  • 带有内容矩形抖动的核心动画

    在我的 益智 游戏中 这些碎片是使用CALayer对于每件作品 有 48 块 在 8x6 网格中 每块为 48x48 像素 我不确定这是否是太多层 但如果这不是最好的解决方案 我不知道什么是 因为使用 Quartz2D 每帧重新绘制整个显示
  • 将用户重定向到 iTunes 应用商店或 Google Play 商店?

    我正在寻找一种简单的解决方案来发布我的应用程序的一个链接 例如在 Facebook 上 如果用户使用移动设备访问它 它应该自动重定向到正确的应用程序商店 否则 用户应该被重定向到我的网站 iOS应用程序 http itunes apple
  • 从 xib 中提取 UI 项目?

    经过一番浏览文档后 我决定使用以下技术 使用 viewWithTag 从 loadNibNamed owner options 返回的主根视图中提取子视图 首先 我有点困惑 因为我假设 loadNibNamed owner options
  • UIAlertView 中的 MPVolumeView?

    是否可以将 MPVolumeView 放入 UIAlertView 中 我已经尝试过put它在里面 但不显示 这可能是sizeToFit or initWithFrame 部分 有没有办法测试是否MPVolumeView实际上正在被创建吗
  • 处理 NSPropertyListSerialization 中的 CFNull 对象

    在我的应用程序中 我尝试序列化服务器响应字典并将其写入文件系统 但对于某些响应 我收到错误 属性列表格式无效 原因是服务器响应中的 CFNull 对象 现在 服务器响应将不断变化 因此我没有明确的方法来删除 CFNull 对象 下面是我的代
  • iPhone PhoneGap 电子邮件编辑器 SECURITY_ERR:DOM 异常 18 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用phonegap 中的 i
  • iPhone / iPad IOS 应用程序仪器内存计数与 task_info 内存计数

    我一直在使用 Instruments Leak Tester 它给出了大约 1 3 meg 的应用程序总分配数字 但是 当使用 task info 时 它会报告更大的内存量 例如 10 20 meg 我想我只是想确认task info正在返

随机推荐