0

我有两个自定义 UIControls。这些是滚轮。

他们的框架重叠。在屏幕截图上,左上角的那个在右边的后面。当在重叠区域内开始触摸时,如何开始左侧的跟踪?

我的 beginTrackingWithTouch 看起来像这样:

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
if (!insideCircle) return NO; } // pseudo-code

如何将事件传播到响应 NO 的 UIControls 后面的视图?

重叠帧

4

1 回答 1

3

我的建议是:
1)为你的轮子子类 UIView,例如WheelView
2)覆盖-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event
例如:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event
{
    CGFloat xOffset = (point.x - self.bounds.size.width / 2);
    CGFloat yOffset = (point.y - self.bounds.size.height / 2);
    CGFloat distanceSqr = xOffset * xOffset + yOffset * yOffset;
    if (distanceSqr > radius * radius)
    {
        // touch point is outside of circle
        return NO;
    }
    return YES;
}

因此,当您返回时NO,触摸将传播到下一个视图,即“下方”。但是,当您的圈子重叠时,这将不起作用 - 仅当框架时,如您的屏幕截图所示。

于 2013-10-14T21:28:37.713 回答