UIView只接受某些区域的接触

时间:2012-06-22 20:55:02

标签: iphone ios cocoa-touch ipad uiview

我有一个UIView,我正在基于touchesBegan和touchesMoved呈现UIBezierPath。但我只想画在UIVIew的某个区域。我想在UIView中设置一个只注册触摸的CGRect。此区域以外的任何接触都不会被注册。

理想情况下,如果用户在此矩形之外移动,他们可以保持触摸,但是当他们拖回到该区域时会调用touchesBegan方法。

任何人都可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:1)

使用pointInside:withEvent:告诉它不接受该点是否在该区域之外。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    return [self isPointWithinMyBounds:point];
}

- (BOOL) isPointWithinMyBounds:(CGPoint) point{
    //determine if the point is within the rect
    return NO;
}

touchesMoved事件将是复杂的事件。你会在视图之外停止绘画。

但这应该可以达到你想要的效果。

答案 1 :(得分:0)

你可以把一个看不见的UIView放在你当前的UIView上,按你想要的触摸区域大小调整。然后只需将手势识别器添加到该视图中。