UIWindow中的iOS UIScrollView
Posted
技术标签:
【中文标题】UIWindow中的iOS UIScrollView【英文标题】:iOS UIScrollView in UIWindow 【发布时间】:2013-03-30 22:28:27 【问题描述】:我目前正在制作一个 ios 项目,其中我有一个 UIScrollView
作为 UIWindow
的直接子视图(使用 [window addSubview:scrollView];
)。窗口的框架及其内容已正确设置,contentSize
设置为大于窗口的框架。当我尝试滚动 UIScrollView 时,它根本不滚动。 scrollEnabled
和 pagingEnabled
都设置为 YES
,但滚动视图不滚动,这让我相信滚动视图甚至没有接收到触摸/滚动事件。如果有任何区别,窗口会添加一个UITapGestureRecognizer
。我是否需要以某种方式将滑动事件转发到UIScrollView
,还是有其他原因导致它不滚动?
编辑:这是一些代码。
float count=ceil([self.msgArray count]/2); //msgArray has length of 3+, NSLog()'d and confirmed.
float contentHeight=97.5 * count;
[dataScrollView setContentSize:CGSizeMake(320,contentHeight)];
dataScrollView.userInteractionEnabled=YES;
dataScrollView.pagingEnabled=YES;
dataScrollView.scrollEnabled=YES;
dataScrollView.clipsToBounds=YES; //Have also tried with this set to NO, or not set at all.
//Add subviews to dataScrollView.
编辑:这里有更多信息。 记录时 contentHeight 为 195.00。我已经删除了委托方法,我又回到了使用滚动视图的直接子视图。窗口高度为 97.50。
编辑:我还从 UIWindow 中删除了 UITapGestureRecognizer,但滚动视图仍然不滚动。
【问题讨论】:
请贴一些代码。 成为事物的代表,看看是否正在调用 -scrollViewDidScroll。或者子类化它并覆盖触摸处理以进行更具体的检查 @lk.查看编辑。添加代码。 @AehmloLxaitn 不幸的是,UIScrollView
不是这样工作的。我会写一个答案。
哦,我明白了,这不可能与问题有关,还好你没有提到它。
【参考方案1】:
啊,UITapGestureRecognizer
!这可能是我在自己的项目中花了几个小时才弄清楚的错误。它的cancelsTouchesInView
属性是否设置为应有的NO
? (YES
是默认设置...如果您不期待它,它真的会让您失望。)
【讨论】:
我将cancelsTouchesInView
设置为NO
,但仍然无法滚动。
当。我确定就是这样。
谢谢。好主意。【参考方案2】:
只需记录滚动视图边界的宽度/高度。您设置的内容高度应大于滚动视图高度。如果它更多,那么滚动视图会自动启用它的滚动。
【讨论】:
我做到了。内容高度更大,并且滚动视图不滚动。 您的内容高度 195 不会大于窗口框架高度。无论您在哪里记录内容高度,记录滚动视图高度。 滚动视图的框架高度为 97.5。以上是关于UIWindow中的iOS UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章