将手势识别器添加到 UIImage,而不是 UIImageView
Adding gesture recognizer to UIImage, not UIImageView
我有一个 UIImageView
,其 'View Mode' 在界面 'Aspect Fit' 中设置为 'Aspect Fit' 想将手势识别器仅添加到我在 [=10= 中的图像].澄清我说的话:
我有一个 UIImageView
,其 bounds.size.width = 100;
和 bounds.size.height = 100;
并且我有一个 UIImage
,其大小为 100x50。因此,当我将我的 UIImage
添加到我的 UIImageView
时,存在一些距离顶部 25 和底部 25 的空间。但是当 he/she 点击这些空间时,我不想识别用户的点击。我只想知道用户何时点击了 UIImage
。
我该怎么做?
您必须将手势识别器添加到 imageView。您可以使用手势识别委托方法做什么:
- gestureRecognizerShouldBegin:
//OR
- gestureRecognizer:shouldReceiveTouch:
然后您可以找出用户在 imageView 中点击的位置,并计算触摸是落在 imageView 中的图像内部还是图像外部。
您可以使用以下方法执行此操作:
CGPoint tapPoint = [gestureRecognizer locationInView:imageView];
// use tap point to compute if it lands inside the image.
由于 UIImage
是从 NSObject
扩展而来的,因此您不能向其添加 UITapGestureRecognizer
,您必须向 UIImageView
本身添加手势。然后在任何 UIGestureRecognizer
委托方法中:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
或
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
获取触摸在 UIImageView
中的位置。然后使用 CGPoint location = [_gesture locationInView:yourImageView]
获取触摸点,现在使用 this link 获取图像的框架。现在检查该点是否在图像的框架内,使用:
bool CGRectContainsPoint ( CGRect rect, CGPoint point );
这可能对您有所帮助。
我有一个 UIImageView
,其 'View Mode' 在界面 'Aspect Fit' 中设置为 'Aspect Fit' 想将手势识别器仅添加到我在 [=10= 中的图像].澄清我说的话:
我有一个 UIImageView
,其 bounds.size.width = 100;
和 bounds.size.height = 100;
并且我有一个 UIImage
,其大小为 100x50。因此,当我将我的 UIImage
添加到我的 UIImageView
时,存在一些距离顶部 25 和底部 25 的空间。但是当 he/she 点击这些空间时,我不想识别用户的点击。我只想知道用户何时点击了 UIImage
。
我该怎么做?
您必须将手势识别器添加到 imageView。您可以使用手势识别委托方法做什么:
- gestureRecognizerShouldBegin:
//OR
- gestureRecognizer:shouldReceiveTouch:
然后您可以找出用户在 imageView 中点击的位置,并计算触摸是落在 imageView 中的图像内部还是图像外部。
您可以使用以下方法执行此操作:
CGPoint tapPoint = [gestureRecognizer locationInView:imageView];
// use tap point to compute if it lands inside the image.
由于 UIImage
是从 NSObject
扩展而来的,因此您不能向其添加 UITapGestureRecognizer
,您必须向 UIImageView
本身添加手势。然后在任何 UIGestureRecognizer
委托方法中:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
或
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
获取触摸在 UIImageView
中的位置。然后使用 CGPoint location = [_gesture locationInView:yourImageView]
获取触摸点,现在使用 this link 获取图像的框架。现在检查该点是否在图像的框架内,使用:
bool CGRectContainsPoint ( CGRect rect, CGPoint point );
这可能对您有所帮助。