2012-02-26 55 views
0

在用户仍在滚动时,如何获取有关UIScrollView的contentOffset或类似信息?例如,如果我想将图像作为标题放在UIWebView内容的正上方,而图像不是WebView的scrollView的一部分,但在用户滚动时更新它,而不是在它们放开后跳到位置。我怎么能这样做呢?如何获取UIScrollView中间滚动的contentOffset?

回答

1

在iOS 5中,UIWebView有一个scrollView属性,它是负责处理滚动的UIScrollView。在iOS 5之前,您可以使用[subview isKindOfClass:[UIScrollView class]]搜索子视图的UIWebView的子视图属性。

一旦你有了UIScrollView,你就可以设置它的委托属性。在委托中,您可以在用户滚动时回复scrollViewDidScroll:消息,并更新标题视图的位置/内容。

加了:29/2/2012 - 为了保留UIWebView的功能,您需要将拦截的UIScrollViewDelegate方法转发给UIWebView。为此,您可以在协议中所有强制方法的末尾调用UIWebView,并为可选协议方法实施类似forwardInvocation:forwardingTargetForSelector的操作。这将保留您的原始UIWebView行为,并允许您使用自己的逻辑对其进行增强。

+0

当我实现这个,我可以得到所描述的contentOffset,但缩放是搞砸了。我注释了“webview.scrollView.delegate = self;”并且缩放是固定的。有任何想法吗? – Greg 2012-02-26 23:23:46

+0

@Greg正如我在我的回答中所说的,你不能用'UIWebView'来做这件事。如果您将自己设置为UIWebView的'UIScrollView'的委托,那么您就是踩着'UIWebView'。它不能做到。 – 2012-02-27 11:50:09

+0

然后在完成你需要做的事情之后,将所有委托调用转发给webview本身。即将自己留作委托,然后在委托方法中向webview发送相同的消息和参数。 – ikuramedia 2012-02-28 16:26:00

0

为什么不能把标题作为单独的视图放在UIWebView之上?为什么它必须是子视图?

+0

它没有。我不知道你从哪里得到。 – Greg 2012-02-28 00:30:59