剪辑导航栏到滚动视图

时间:2011-02-12 20:42:44

标签: iphone cocoa-touch uikit

Safari中导航栏随Web视图滚动的相同行为。

我尝试过两个滚动视图。第一个滚动视图是导航栏的容器,第二个滚动视图隐藏了滚动指示器。它的工作原理(导航栏滚动)几乎就像Safari 中的导航栏一样,但问题出在这里:

  • 第二个滚动视图上的滚动指示器已隐藏,即使我未将属性showsScrollIndictor设置为NO
  • 当我点击状态栏时,它不会滚动到第一个滚动视图的顶部(nester)

4 个答案:

答案 0 :(得分:1)

好吧,如果您不介意破解视图树,只需将其作为子视图添加到WebView的scrollView中,然后将其他所有内容都删除。我在Apple的UICatalog(WebViewController.m,而不是[self.view addSubview:urlField];)中尝试过,它似乎可以工作

UIScrollView * myScrollView;
for (UIView * view in [myWebView subviews]) {
    if ([view isKindOfClass:[UIScrollView class]]) {
    myScrollView = (UIScrollView *) view;  //probably first, but ya never know
    }
}

for (UIView * view in [myScrollView subviews]) {
     CGRect tempFrame = view.frame;
     tempFrame.origin.y  += kTextFieldHeight;
     view.frame = tempFrame;
}
[myScrollView addSubview:urlField];

为了让它更漂亮,你还需要在textFieldFrame中将“kTweenMargin”替换为0并删除webFrame调整:

   webFrame.origin.y += kTopMargin + 5.0;  
   webFrame.size.height -= 40.0; 

答案 1 :(得分:1)

显然,这不是标准行为,这意味着hacky可能是唯一的出路。

您可以尝试阻止除滚动之外的任何交互的滚动视图,而是将触摸事件传递到UIWebView中。在主控制器中执行此路由。

可能还会发生的是Safari没有使用标准工具栏 - 它可能是Safari注入网页代码的一些HTML。 UIWebView确实有一个loadHTML:或类似的方法; Apple可以简单地添加一些Javascript /图像作为工具栏。

最难的是检测用户在Web视图中滚动了多远,然后向上移动Web视图,将工具栏从屏幕顶部移开相同的量,直到工具栏关闭,然后继续滚动正常。

答案 2 :(得分:0)

尝试制作导航控制器500的y值,看看是否可以滚动它。如果可以,那么问题是它不会滚动到负范围。

答案 3 :(得分:0)

UIToolbarUIWebView放在同一UIScrollView