2011-02-14 83 views
0

我有一个带textviews作为子视图的UIScrollView。现在在我的应用程序中有多个像这样的UIScrollViews。根据选择,我会在前一个视图的顶部显示相应的UIScrollView。这在所有情况下都可以正常工作,除非前一个视图也是UIScrollView。在这种情况下,我得到的行为是两个UIScrollView堆叠在一起,两个视图捕获滚动事件。来自以前的scrollView的textViews也是可见的(不可编辑),并重叠并导致各种问题。事情是全屏UIScrollView作为子视图放置到以前的视图导致问题时,前一个视图也是全屏UIScrollView。UIScrollView问题

任何关于如何克服这一点的指针会很棒。无论如何都要通知父级滚动视图的孩子的滚动事件,并以完全相同的方式移动它,所以这个混乱被掩盖?

谢谢!

回答

0

通过在呈现下一个scrollView之前呈现空视图,找到了一个粗略的解决方案。将scrollView作为子视图添加到该空视图(带有BG图像),并将待展示的scrollView作为子视图添加到该视图中,然后将其显示在前一个scrollView的顶部。

1

UIScrollView documentation说:

重要:你不应该嵌入的UIWebView或UITableView的对象UIScrollView的对象。如果这样做,可能会导致意外的行为,因为两个对象的触摸事件可能混淆并被错误地处理。

据我所知,通常不建议在UIScrollView中嵌入一个UIScrollView子类实例。在我的一个项目中,这是一个IM应用程序,我有一个包含许多UITableViews的UIScrollView,它在你尝试的时候有效,但它确实需要花费很多精力来处理细微的错误并使其正常工作。

如果不潜入代码中,就很难说出对您的问题有用的东西,但我可以推荐您不要将UIScrollViews添加到另一个堆栈中。我会尝试通过只允许一个UIScrollView在顶部,并删除其他人。当你需要显示另一个时,从视图层次结构中删除最上面的一个,并添加新的。我希望这有助于,祝你好运。