1

我有一个 UIControl(或 UIView,不管哪个),这由另一个 UIControl 覆盖。另一个 UIControl 对触摸事件反应良好。但是,底层 UIControl 还需要了解触摸,以及从用户的角度来看它是否真的“在上面”。覆盖的 UIControl 是部分透明的。

如何在底层 UIControl 上捕捉到这种触摸?

4

1 回答 1

1

我认为有几种方法可以解决这个问题......

您可以将触摸事件传递给另一个控件...尽管我认为如果您将上视图移动到另一个视图上,这将不起作用?您可能需要进行实验。

更简单的方法可能只是查看下部矩形是否包含接触点:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self];
    if (CGRectContainsPoint(lowerView.frame, touchLocation)) {
        <doyourthing>
}

我不记得了,但您可能需要在两个视图之间转换视图坐标?!?或者您可以使用- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event询问视图本身

于 2009-08-21T23:58:42.627 回答