Reminders.app UIScrollView 滚动说明。

Posted

技术标签:

【中文标题】Reminders.app UIScrollView 滚动说明。【英文标题】:Reminders.app UIScrollView scrolling explanation. 【发布时间】:2012-07-28 03:27:29 【问题描述】:

我目前正在为 iPhone 编写一个应用程序,我的水平(水平,如水平滚动,而不是垂直滚动)UIScrollView 遇到了一些问题。

UIScrollView高度为 260宽度为 320。 它有 2 个页面,每个页面中都有一个 UITableViewUITableView 的框架与UIScrollView 的框架相同。

问题在于80% 的时间,当前UITableView 将拖动/滑动检测为垂直滚动(但它实际上是水平的)并开始垂直滚动表格视图。

我的问题如下:

有人可以向我解释一下应用程序 Reminders 是如何实现滚动视图滚动的吗?如果你仔细看,你会发现滚动视图很好地处理了水平滚动,并且水平滚动是由滚动视图处理的(而不是像我的那样由 tableview 处理)。 如果有人需要更多解释,请发表评论。

【问题讨论】:

这个问题解决了吗?我也很好奇如何做到这一点。 【参考方案1】:

如果我尝试在提醒的表格视图中向左/向右滚动,它不会响应。如果我在添加按钮所在的表头视图中滚动,它会毫无问题地滚动。我的猜测是他们将表格视图标题设为 UIScrollView。 Apple 强烈反对在滚动视图中使用表格视图(或者任何从 UIScrollView 继承到从 UIScrollView 继承的不同视图的视图),因此他们可能不会接受自己的建议并忽略它。

【讨论】:

嵌套 UIScrollViews 通常是正确的方法。我从来没有听说过苹果不鼓励它。 来自 UIWebView 类参考:You should not embed UIWebView or UITableView objects in UIScrollView objects. If you do so, unexpected behavior can result because touch events for the two objects can be mixed up and wrongly handled. 我想我假设这适用于从 UIScrollView (+ UIWebView) 继承的所有类 我知道我不应该这样做,但我/必须/这样做。你知道怎么做吗? 一个简单的滑动手势识别器就足够了吗? 将两个页面都添加到视图中。一个在当前可见的帧 (x= 0),另一个在 x= +320 或 -320(取决于您希望当前不可见的页面位于左侧还是右侧)。当您检测到滑动时,您只需将两个视图的帧设置为 -320(左滑动)或 +320(右滑动)。如果你愿意,你可以制作动画。您唯一不会拥有的是“部分”滚动,例如 Springboard 上的情况。再说一次,提醒应用程序也没有。

以上是关于Reminders.app UIScrollView 滚动说明。的主要内容,如果未能解决你的问题,请参考以下文章

在UIWebView上启用缩放/缩放

动态 UITableView 高度

CSS / CGRect 定位

UIScrollVIew 中的静态对象

如何使背景图像正确适合滚动视图?

UIScrollview 无法识别从屏幕边缘滑动