我有UIImageView
其观看模式'被设置为“适应者”#39;在Interface Builder中。我想在UIImageView
内只为我的图像添加手势识别器。为了澄清我说的话:
我有一个UIImageView
bounds.size.width = 100;
和bounds.size.height = 100;
我有UIImage
,其大小为100x50。因此,当我将UIImage
添加到UIImageView
时,顶部有25个空格,底部有25个空格。但是当我/她点击这些空间时,我不想识别用户的点击。我只是想知道用户何时点击UIImage
。
我该怎么做?
答案 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)
当UIImage
从NSObject
延伸而无法向其添加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 );
这可能会对你有帮助。