【发布时间】:2011-03-03 21:00:01
【问题描述】:
我的情况类似于这两个帖子(1907297 和 689684),为了最简洁地描述我的情况,我展示了这个文本/图形布局(类似于你在 IB 中看到的,点用于强制缩进级别)
UIView(主视图:320x460)
. .UIScrollView (ScrollView: 320x460)
. .UIView (OverlayView: 320x40)
. . . .UIButton (ArbitraryButton1)
. . . .UILabel (ArbitraryLabel1)
. . . .UILabel (ArbitraryLabel2)
这里的目标是让 OverlayView 作为一个统一的、透明的容器来定位和显示一些任意按钮/标签在 ScrollView 的顶部。这些按钮/标签应保持静止,而下方 ScrollView 中的内容会随着用户滑动而移动。按钮/标签有时可能会同时隐藏/取消隐藏/缩放(与动画一起),这使得将它们全部分组在单个 OverlayView 中很方便。
问题在于,虽然在 OverlayView 上的点击似乎可以很好地直接传递到底层 ScrollView,但滑动动作没有效果。我可以通过覆盖来检测/拦截滑动
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
OverlayView 中的方法,但是我还没有找到一种方法以使其滚动的方式正确地将它们传递给 ScrollView。显然 touchesMoved 方法不是 UIScrollView 用来检测/解释滑动的方法?
我研究过的所有其他类似帖子要么找到了在我的情况下不起作用的不同解决方案,要么只是没有解决。我还看到提到使用 touchesShouldBegin / touchesShouldCancel 虽然我不知道如何实现。无论如何,仍然希望社区有一些见解可以让我为此提出一个优雅的解决方案 - 任何示例代码都会很棒。
提前致谢,乔尔。
附: - 我还应该提到,我需要使它与 iOS 3.0 兼容,所以我认为尝试使用 UIGestureRecognizers 已经过时了。
【问题讨论】:
-
我想你从来没有解决过这个问题?
标签: uiview uiscrollview overriding swipe touchesmoved