Ios 将手势识别器添加到UIImage,而不是UIImageView

Ios 将手势识别器添加到UIImage,而不是UIImageView,ios,objective-c,uiimageview,uiimage,uigesturerecognizer,Ios,Objective C,Uiimageview,Uiimage,Uigesturerecognizer,我有一个UIImageView,它的“查看模式”在界面生成器中设置为“方面匹配”。我只想将手势识别器添加到UIImageView中的我的图像中。为了澄清我的说法: 我有一个UIImageView,它的bounds.size.width=100和bounds.size.height=100我有一个大小为100x50的UIImage。因此,当我将我的UIImage添加到我的UIImageView时,存在一些距离顶部25和距离底部25的空间。但我不想在用户点击这些空间时识别用户的点击。我只想知道用户何

我有一个
UIImageView
,它的“查看模式”在界面生成器中设置为“方面匹配”。我只想将手势识别器添加到
UIImageView
中的我的图像中。为了澄清我的说法:

我有一个
UIImageView
,它的
bounds.size.width=100
bounds.size.height=100我有一个大小为100x50的
UIImage
。因此,当我将我的
UIImage
添加到我的
UIImageView
时,存在一些距离顶部25和距离底部25的空间。但我不想在用户点击这些空间时识别用户的点击。我只想知道用户何时点击了
UIImage


我该怎么做?

您必须将手势识别器添加到imageView中。您可以使用手势识别代理方法执行以下操作:

- gestureRecognizerShouldBegin:
//OR
- gestureRecognizer:shouldReceiveTouch:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
然后,您可以找出用户在imageView中点击的位置,并计算触摸是落在imageView中的图像内部还是图像外部

您可以使用以下方法执行此操作:

CGPoint tapPoint = [gestureRecognizer locationInView:imageView];
// use tap point to compute if it lands inside the image.

由于
UIImage
是从
NSObject
扩展而来,因此不能向其添加
uiapgestureRecognitizer
,必须向
UIImageView
本身添加手势。然后在任何一种
UIgestureRecognitor
委托方法中:

- gestureRecognizerShouldBegin:
//OR
- gestureRecognizer:shouldReceiveTouch:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;

UIImageView
中获取触摸屏的位置。然后通过使用
CGPoint location=[\u手势位置查看:yourImageView]
获取接触点,现在使用link获取图像的帧。现在,使用以下方法检查该点是否在图像帧中:

bool CGRectContainsPoint ( CGRect rect, CGPoint point );

这可能会对您有所帮助。

这完全是我所要求的。谢谢。您为我解决了很多问题。我使用
-(BOOL)手势识别器开始:(uigestureerecognizer*)手势识别器也谢谢。但在其他答案中,所有部分都包含在内。因此我接受了另一个答案。关于如何计算imageView图像帧和CGRectContainsPoint的给定链接包含在其他答案中。