[英]How to get a UIView under a UIScrollView to detect touches?
我有一个UIScrollView ontop我的UIViewController在你现场的页面上重新创建像Gowalla iPhone应用程序中的效果。 在我的滚动视图下,我有一个按钮,我希望能够执行它的动作,即使滚动视图的框架覆盖它(按钮的顶部,滚动视图清晰)。 我该怎么办? 可能吗? (必须是,Gowalla [不知何故]做到了)
至于我,我将通过覆盖以下方法将触摸事件转移到另一个视图。
像这样,
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// pass touch event by default implement.
[super touchesBegan:touches withEvent:event];
// redirect the touch events.
[anotherView touchesBegain:touches withEvent:event];
}
hitTest:withEvent:用于决定哪个视图应该响应视图层次结构树上的触摸事件。 如果视图不想响应触摸事件,它将在hitTest中返回nil。 结果,不会调用上述触摸事件方法。
我不知道这个“Gowalla”应用程序可能做什么; 希望您对“滚动视图后面的按钮,您可以通过滚动视图”进行触摸的描述是准确的。
如果滚动视图后面的按钮大小可以填充滚动视图的整个contentSize
区域而不会搞砸你的界面,最简单的解决方案就是将它放在滚动视图中(在所有其他视图下)并执行此操作。
否则,您最好的选择可能是创建一个具有清晰背景的自定义视图,以放置在滚动视图中,如上所示。 简单的解决方案是让自定义视图(可能是UIControl)只需触摸按钮即可。 如果由于某种原因这是不可能的,那么最好的选择是在自定义视图上覆盖hitTest:withEvent:
以返回基础按钮。 我要警惕在滚动视图本身上覆盖hitTest:withEvent:
因为这可能会干扰滚动。
尝试在滚动视图顶部添加按钮。 唯一的问题是,如果你点击按钮,你将无法与scrollView交互,但它仍然是可见的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.