Mob*_*oel 6 overriding uiscrollview uiview swipe touchesmoved
我的情况类似于这两个帖子(1907297和689684)并且最简洁地描述我的情况,我提出了这个文本/图形布局(类似于你在IB中看到的,用于强制缩进级别的点)
UIView(MainView: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
Run Code Online (Sandbox Code Playgroud)
OverlayView中的方法,但是我还没有找到一种方法将它们正确地传递给ScrollView,使其滚动.显然,touchesMoved方法不是UIScrollView用来检测/解释滑动的方法吗?
我研究过的所有其他类似帖子都找到了一个不同的解决方案,在我的情况下不起作用或者刚刚解决.我也看到过提到使用touchesShouldBegin/touchesShouldCancel虽然我不知道如何实现.无论如何,仍然希望社区有一些洞察力可以让我为此提出一个优雅的解决方案 - 任何示例代码都会很棒.
在此先感谢,乔尔.
PS - 我还应该提一下,我需要让它与iOS 3.0兼容,所以我认为尝试使用UIGestureRecognizers已经出局了.
怎么样,在运行时在 viewDidLoad 中将按钮从容器视图中取出并将它们直接作为子视图放置在视图中(并摆脱容器视图)?然后没有容器视图来拦截滑动,但您仍然可以使用视图对 IB 中的内容进行分组。
另外,您也可以将容器视图作为滚动视图的子视图,并在滚动视图委托中每当用户滚动时不断重新定位视图。这似乎很容易让人紧张,但可能值得一试。
此外,如果包含视图是一个视觉容器并且您需要查看它,则可以使用放置在 CALayer 顶部的超级视图中的 CALayer 来渲染滚动视图,因为 CALayers 与输入无关,并且不会每一次接触。
| 归档时间: |
|
| 查看次数: |
2436 次 |
| 最近记录: |