gpt4 book ai didi

iphone - UIImageView 不同区域的 UIGesture 识别

转载 作者:行者123 更新时间:2023-12-01 19:21:49 25 4
gpt4 key购买 nike

我有这张图片:

enter image description here

我想要做的是向这个图像添加一个 UITapGestureRecognizer(或者我可以将图像拆分为它所包含的不同部分,并为每个部分添加一个 UITapGestureRecognizer),以便根据被点击的叶子执行不同的操作。如果我将每个叶子的图像拆分为不同的图像,则 UIImageViews 可能会重叠,并且点击一个将被识别为点击另一个。只有一个图像意味着知道屏幕上属于一片叶子而不是另一片叶子的点。

任何有关如何做到这一点的线索将不胜感激。
谢谢

最佳答案

通过检查手势识别器的 locationInView: 来改变你的行为。 .

如果您将图像作为一个单元处理,请在您的手势识别器回调中实现这一点,以决定点击了哪个“叶子”(如果有的话)。

如果您将图像作为多个图像处理,您也可以在回调中实现它,或者您也可以在例如您的委托(delegate)的 gestureRecognizerShouldBegin: 中实现它抑制绘制的叶子外部的触摸事件。

编辑:我没有意识到您可能还在寻求帮助来确定一个点是否位于一片叶子内。 @PhillipMills 在这一点上是正确的:我们需要知道您是如何绘制图像的。

跟进:这有点超出我的专业领域。

最简单的方法(从 HitTest 的角度来看)是按照@PhillipMills 的建议,使用 Quartz 绘图和 CGPathContainsPoint() .如果您有需要渲染为 PNG 的详细图形,您当然可以构建一个简单的路径,该路径将(实际上)覆盖以允许 HitTest 。

您的其他选择,AFAIK,是在数学上进行 HitTest ,但您基本上会重新实现 CGPathContainsPoint()但是没有路径,或者使用各种技巧来查看触摸点的像素颜色来进行 HitTest 。如果你走这条路,谷歌搜索会得到一些有用的结果,但老实说,对于像你绘制的那样简单的形状,只需使用一些 UIBezierPath在代码中重新创建的代码。

关于iphone - UIImageView 不同区域的 UIGesture 识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com