将UIGestureRecognizer添加到自定义drawRect或UIBezierPath

时间:2014-04-01 08:47:36

标签: ios objective-c uigesturerecognizer uibezierpath

我使用drawRect创建了自定义视图。所有绘图逻辑都是在该方法中完成的,我没有将视图拆分为单独的子视图(使用UIBezierPath绘图)

我需要在这个新的自定义视图的角落添加一个手势识别器 - 但是因为完成的视图是一个"绘图"在上下文中 - 它不被认为是一个单独的UIView - 并且手势识别绘图的所有部分。

只有在抓住一个角落时才能识别手势吗?

我的观点可以以某种方式缓存"右上角"并且在手势识别器的代表中返回" NO"在

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

2 个答案:

答案 0 :(得分:2)

以下是一段代码

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if (gestureRecognizer != self.tapGestureRecognizer) {
        return YES;
    }
    CGPoint touchLocation = [touch locationInView:self.targetView];
    return [self.bezierPath containsPoint:touchLocation];
}

答案 1 :(得分:0)

您可以按照以下方式验证触摸点的位置:

CGPoint point = [gestureRecognizer locationInView:self];

现在检查该点是否位于已定义的区域中:

if(!CGRectContainsPoint([myDefinedCGRect, point))
{
    return YES;
}