我有一个 UIControl(或 UIView,不管哪个),这由另一个 UIControl 覆盖。另一个 UIControl 对触摸事件反应良好。但是,底层 UIControl 还需要了解触摸,以及从用户的角度来看它是否真的“在上面”。覆盖的 UIControl 是部分透明的。
如何在底层 UIControl 上捕捉到这种触摸?
我有一个 UIControl(或 UIView,不管哪个),这由另一个 UIControl 覆盖。另一个 UIControl 对触摸事件反应良好。但是,底层 UIControl 还需要了解触摸,以及从用户的角度来看它是否真的“在上面”。覆盖的 UIControl 是部分透明的。
如何在底层 UIControl 上捕捉到这种触摸?
我认为有几种方法可以解决这个问题......
您可以将触摸事件传递给另一个控件...尽管我认为如果您将上视图移动到另一个视图上,这将不起作用?您可能需要进行实验。
更简单的方法可能只是查看下部矩形是否包含接触点:
-(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询问视图本身