不管我尝试了多少,都无法访问(手柄滚动/ Touchevents)两个正方形视图A和B(B上方的A)之间的重叠区域(直角三角形),如图所示

ios - uibezierpath内部的pointInside:withEvent(两个 View 之间的重叠区域)-LMLPHP

我想要由UIbezierpath定义的右侧部分(三角形B)来处理其下的视图(即B)的滚动。由于它是bezierpath,因此我无法通过pointInside: withEvent:访问它。
甚至touchesBegan:withEvent:都不起作用

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];
    if ([leftPath containsPoint:touchPoint])
    {  //Do something
     }
 }


请帮忙。

最佳答案

您必须实现UIView的hitTest方法以检测特定视图上的触摸。只需将View子类化并实现hitTest方法。

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{

if ([path containsPoint:point]){

    return [super hitTest:point withEvent:event];
}
else{

    return nil;
}

}

关于ios - uibezierpath内部的pointInside:withEvent(两个 View 之间的重叠区域),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34370512/

10-11 14:13