无论我尝试了多少,我都无法访问(处理滚动/触摸事件)两个方形 View A 和 B(A 在 B 顶部)之间的重叠区域(直角三角形),如图所示
我想要由 UIbezierpath 定义的右侧部分(三角形 B)来处理其下方 View (即 B)的滚动。我无法通过 pointInside: withEvent:
访问它,因为它是 bezierpath。
甚至 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 上的触摸。只需将您的 View 子类化并实现 hitTest 方法。
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if ([path containsPoint:point]){
return [super hitTest:point withEvent:event];
}
else{
return nil;
}
}
关于ios - pointInside :withEvent inside uibezierpath (overlapping area between two views),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370512/