被覆盖的 UIControl 或 UIView 如何知道在其上方结束的触摸事件?
Posted
技术标签:
【中文标题】被覆盖的 UIControl 或 UIView 如何知道在其上方结束的触摸事件?【英文标题】:How can a covered UIControl or UIView know about a touch event that ended above it? 【发布时间】:2009-08-21 13:21:17 【问题描述】:我有一个 UIControl(或 UIView,不管哪个),它被另一个 UIControl 覆盖。另一个 UIControl 对触摸事件反应良好。但是,底层 UIControl 还需要了解触摸以及从用户的角度来看它是否真的“在上面”。覆盖的 UIControl 是部分透明的。
如何在底层 UIControl 上捕捉到这种触摸?
【问题讨论】:
【参考方案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
询问视图本身【讨论】:
以上是关于被覆盖的 UIControl 或 UIView 如何知道在其上方结束的触摸事件?的主要内容,如果未能解决你的问题,请参考以下文章
对 uicontrol 的 nextresponder 感到困惑
以编程方式将 UIView 更改为 UIControl 的实例 [关闭]
如何从另一个 UIView 类访问 UIControl 的值
通过点击它来改变 UIView/UIControl 的屏幕位置