我的 UIViewController 顶部有一个 UIScrollView,当您在某个位置的页面上时,它可以重新创建类似于 Gowalla iPhone 应用程序中的效果。在我的滚动视图下,我有一个按钮,即使滚动视图的框架覆盖它(它在按钮顶部,滚动视图清晰),我也希望能够执行它的操作。我该怎么做这样的事情?可能吗?(它必须是,Gowalla [不知何故]做到了)
问问题
3876 次
3 回答
2
至于我,我将通过覆盖以下方法将触摸事件转移到另一个视图。
- – touchesBegan:withEvent:
- – touchesMoved:withEvent:
- – touchesEnded:withEvent:
- – touchesCancelled:withEvent:
像这样,
- (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。结果不会调用上述触摸事件方法。
于 2011-03-20T03:04:21.537 回答
0
尝试在滚动视图顶部添加按钮。唯一的问题是如果你点击按钮,你将无法与 scrollView 交互,但它仍然是可见的。
于 2011-03-20T02:23:03.903 回答
0
我不知道这个“Gowalla”应用程序会做什么;希望您对“滚动视图后面的按钮,您可以通过滚动视图触摸”的描述是准确的。
如果您的滚动视图后面的按钮可以调整大小以填充contentSize
滚动视图的整个区域而不会弄乱您的界面,那么最简单的解决方案就是将它放在滚动视图内(在所有其他视图下)并这样做。
否则,您最好的选择可能是创建一个具有清晰背景的自定义视图,并将其放置在上面的滚动视图中。简单的解决方案是让自定义视图(可能是 UIControl)只做触摸按钮所做的任何事情。如果由于某种原因这不可能,您最好的选择是覆盖hitTest:withEvent:
自定义视图以返回底层按钮。我会警惕覆盖hitTest:withEvent:
滚动视图本身,因为这可能会干扰滚动。
于 2011-03-20T02:19:38.197 回答