2015-06-19 43 views
0

我有一个UIImageView其'视图模式'被设置为'界面生成器中的'Aspect Fit'。我想添加手势识别器只有我的图像里面的UIImageView。为了澄清我说:添加手势识别器到UIImage,而不是UIImageView

我有一个UIImageViewbounds.size.width = 100;bounds.size.height = 100;和我有一个UIImage大小为100x50。所以,当我将我的UIImage添加到我的UIImageView时,存在一些顶部25和底部25的空间。但我不想在用户点击这些空间时识别用户的水龙头。我只是想知道当用户点击UIImage

我该怎么做?

回答

1

由于UIImageNSObject伸出你不能添加UITapGestureRecognizer它,你要的姿态加入到UIImageView本身。然后在任何UIGestureRecognizer委托方法:

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

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

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

bool CGRectContainsPoint (CGRect rect, CGPoint point); 

这可能会帮助你。

+0

这完全是我问的。谢谢。你为我解决了很多。 –

+1

我通过使用' - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;' –

1

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

- gestureRecognizerShouldBegin: 
//OR 
- gestureRecognizer:shouldReceiveTouch: 

然后你可以揣摩出在ImageView的挖掘和用户计算,如果触摸在ImageView的或图像外树形象内降落。

为此,可以使用采用以下操作:

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

也谢谢。但在其他答案中,所有部分都被覆盖了。所以我接受了另一个。给出了如何计算imageView的图像框架和CGRectContainsPoint的链接。 –