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

时间:2015-06-19 19:32:10

标签: ios objective-c uiimageview uiimage uigesturerecognizer

我有UIImageView其观看模式'被设置为“适应者”#39;在Interface Builder中。我想在UIImageView内只为我的图像添加手势识别器。为了澄清我说的话:

我有一个UIImageView bounds.size.width = 100;bounds.size.height = 100;我有UIImage,其大小为100x50。因此,当我将UIImage添加到UIImageView时,顶部有25个空格,底部有25个空格。但是当我/她点击这些空间时,我不想识别用户的点击。我只是想知道用户何时点击UIImage

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您必须将手势识别器添加到imageView。您可以使用手势识别委托方法:

- gestureRecognizerShouldBegin:
//OR
- gestureRecognizer:shouldReceiveTouch:

然后,您可以确定用户在imageView中点击的位置,并计算触摸是否位于imageView中的图像内部或图像外部。

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

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

答案 1 :(得分:1)

UIImageNSObject延伸而无法向其添加UITapGestureRecognizer时,您必须向UIImageView本身添加手势。然后在任何UIGestureRecognizer委托方法中:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

获取UIImageView中的触摸位置。然后使用CGPoint location = [_gesture locationInView:yourImageView]获取触摸点,现在使用this链接获取图像的帧。现在使用以下方法检查点是否在Image的框架中

bool CGRectContainsPoint ( CGRect rect, CGPoint point );

这可能会对你有帮助。