UIScrollView的幻灯片

时间:2011-07-30 20:21:29

标签: iphone ipad sdk

我使用uiview制作幻灯片视图并检测移动页面的触摸。这个幻灯片视图几乎就像this,除了我使它像UITableView一样工作。

现在我用uiscrollviews来使用它来uivews。问题是,“如何将触摸事件分发到scrollview或slideview?”。我有逻辑要做。基本上,uiscrollviews是垂直的,slideview是水平的。

我尝试了hitTest来保持touchBegan,Moved,Ended in slideview。当我水平触摸移动时,我会保持幻灯片视图,垂直时,分发到uiscrollview。但我无法弄清楚如何将事件分发给uiscrollview。

调用 [scrollView touchesBegan:touches withEvent:event] 不起作用。我认为uiscrollview有不同的工作方式。

1 个答案:

答案 0 :(得分:0)

如果你找不到答案的线索,可能,你错了。

UIScrollView使用自己的方式获取touchesBegan,Moved和Ended。我没有的方式,但这意味着如果你覆盖touchesBegan使UIScrollView停止工作,你将无法得到它。在滚动的超级视图中使用hitTest,您可以在UIScrollView之前获得触摸,但是在触摸发生时您无法更改触摸目标。

毕竟,有三种方法可以解决这个问题。

1-模拟触摸 我没有测试过这个,你会在下面知道。事件来自UIWindow并通过 - (void)sendEvent:(UIEvent *)事件分发到子视图。我们不知道目标是如何保存的,而改变这完全是不可能的。但是我们可以使用覆盖superview的hitTest的想法来知道用户将做什么来使'WA'改变目标。为此,请模拟触摸结束事件。假定的目标将被重置。模拟触摸事件再次开始,这次确保让hittest获得scrollview。 您可以找到如何模拟事件here。问题是,使用私有方法可能会拒绝您的应用。

2-制作您自己的UIScrollView 这应该是最好的还是最差的,取决于你想做什么。我相信这很痛苦。并不是你现在想做的事。

3-投降'嵌套UIScrollView' 要制作pdf,hq,docs和书籍的幻灯片,这是最好,最轻松的方式。将UIScrollView放在另一个内部,让他们达成滚动协议。 http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/NestedScrollViews/NestedScrollViews.html