仅在视图的一部分上接收轻击手势

Isu*_*uru 8 map uiimageview ios uitapgesturerecognizer

我有一个UIImageView视图控制器.是否可以使图像视图的某些区域可以进行处理?

示例:我有一张地图图片.只允许POI可点击.不是整个形象.这可能吗?

man*_*jmv 16

您可以使用handleGesture方法.首先,您需要创建一个接收触摸的位置,您必须将其与委托方法中的触摸位置进行比较,如下所示:

CGRect locationRect;
Run Code Online (Sandbox Code Playgroud)

在viewdidload中

locationRect = CGRectMake(CREATE A FRAME HERE);
Run Code Online (Sandbox Code Playgroud)

下一个委托方法

- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer {
    CGPoint p = [gestureRecognizer locationInView:self.view];
    if (CGRectContainsPoint(locationRect, p)) {
        NSLog(@"it's inside");
    } else {
        NSLog(@"it's outside");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案太甜了,我现在患有糖尿病. (8认同)

bor*_*den 2

是的,这是可能的,但你应该问自己这是否值得。如果是我,我会在地图上添加一个兴趣点对象,并在上附加一个手势识别器。但是,如果您想走另一条路,您可以查看以下方法UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
Run Code Online (Sandbox Code Playgroud)

这将说明手势是否应该处理给定的触摸。您可以根据您的 POI 进行过滤。