这是我的代码:
[super viewDidLoad];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognizer:)];
[self.colorView setUserInteractionEnabled:YES];
[self.colorView addGestureRecognizer:tapGesture];
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
touchPoint = [touch locationInView:self.colorView];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(touchPoint.x,touchPoint.y)];
[path addLineToPoint:CGPointMake(startingPoint.x,startingPoint.y)];
startingPoint=touchPoint;
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = [[UIColor blueColor] CGColor];
shapeLayer.lineWidth = 3.0;
shapeLayer.fillColor = [[UIColor redColor] CGColor];
[self.colorView.layer addSublayer:shapeLayer];
NSLog(@"Touch moving point =x : %f Touch moving point =y : %f", touchPoint.x, touchPoint.y);
}
所以它只能在colorView上工作,但发生的是,触摸也在内部self.view上工作,如何解决这个问题。
最佳答案
你可以加:
self.colorView.clipsToBounds = YES;
它将解决您的问题。
一个布尔值,用于确定子视图是否仅限于
视图的边界。
声明OBJECTIVE-C @property(nonatomic)BOOL clipsToBounds
讨论将此值设置为YES会导致子视图被裁剪为
接收者的范围。如果设置为“否”,则其框架会扩展的子视图
超出接收器可见范围的内容不会被裁剪。默认值
值是NO。
可用性在iOS 2.0和更高版本中可用。
链接:Reference
因此,因为它不是。因此,互动将扩展到超级视野。当您设置为是时。它仅适用于您的子视图。