这是我的代码:

[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上工作,但发生的是ios - UIGestureRecognizer仅为subView添加,但它也可以在parentView上使用?-LMLPHP,触摸也在内部self.view上工作,如何解决这个问题。

最佳答案

你可以加:

 self.colorView.clipsToBounds = YES;


它将解决您的问题。


  一个布尔值,用于确定子视图是否仅限于
  视图的边界。
  
  声明OBJECTIVE-C @property(nonatomic)BOOL clipsToBounds
  讨论将此值设置为YES会导致子视图被裁剪为
  接收者的范围。如果设置为“否”,则其框架会扩展的子视图
  超出接收器可见范围的内容不会被裁剪。默认值
  值是NO。
  
  可用性在iOS 2.0和更高版本中可用。
  链接:Reference


因此,因为它不是。因此,互动将扩展到超级视野。当您设置为是时。它仅适用于您的子视图。

07-24 12:53