pointInside:withEvent inside uibezierpath(两个视图之间的重叠区域)
pointInside:withEvent inside uibezierpath (overlapping area between two views)
无论我尝试了多少,我都无法访问(处理 scrolling/Touchevents)两个方形视图 A 和 B(A 在 B 之上)之间的重叠区域(直角三角形)如图所示
我想要由 UIbezierpath 定义的右侧部分(三角形 B)来处理其下方视图(即 B)的滚动。我无法通过 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 方法来检测特定视图上的触摸。只需将您的视图子类化并实现 hitTest 方法。
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if ([path containsPoint:point]){
return [super hitTest:point withEvent:event];
}
else{
return nil;
}
}
无论我尝试了多少,我都无法访问(处理 scrolling/Touchevents)两个方形视图 A 和 B(A 在 B 之上)之间的重叠区域(直角三角形)如图所示
我想要由 UIbezierpath 定义的右侧部分(三角形 B)来处理其下方视图(即 B)的滚动。我无法通过 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 方法来检测特定视图上的触摸。只需将您的视图子类化并实现 hitTest 方法。
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if ([path containsPoint:point]){
return [super hitTest:point withEvent:event];
}
else{
return nil;
}
}