2012-02-26 2 views
0

ユーザーがまだスクロールしている間、UIScrollViewに関するcontentOffsetまたは同様の情報を取得するにはどうすればよいでしょうか?たとえば、UIWebViewのコンテンツのすぐ上にヘッダーとしてイメージを配置したい場合、イメージはWebViewのscrollViewの一部ではなく、ユーザーがスクロールしている間に更新されず、放した後にその位置にジャンプするだけではありません。これをどうやってやることができますか?UIScrollViewのmid-scrollのcontentOffsetを取得するにはどうすればよいですか?

答えて

1

iOS 5では、UIWebViewscrollViewというプロパティを持ちます。このプロパティはスクロールの処理に責任がありますUIScrollViewです。 iOS 5以前には[subview isKindOfClass:[UIScrollView class]]を使用してサブビューのUIWebViewのサブビュープロパティを検索することができます。

UIScrollViewを取得したら、そのデリゲートプロパティを設定できます。デリゲートでは、ユーザーがスクロールしたときにscrollViewDidScroll:メッセージに応答し、ヘッダービューの位置/内容を更新できます。

追加:2012/02/29 - UIWebViewの機能を維持するために、傍受されたUIScrollViewDelegateメソッドをUIWebViewに転送する必要があります。これを行うには、プロトコル内のすべての必須メソッドの最後にUIWebViewを呼び出し、任意のプロトコルメソッドに対してforwardInvocation:またはforwardingTargetForSelectorのようなものを実装します。これにより、オリジナルのUIWebViewの動作が維持され、独自のロジックで強化することができます。

+0

これを実装すると、記述したようにcontentOffsetを取得できますが、ズーミングが乱れてしまいます。私は "webview.scrollView.delegate = self;"とコメントしました。ズーミングを固定した。何か案は? – Greg

+0

@Greg私が答えて言ったように、あなたは 'UIWebView'でこれを行うことはできません。 'UIWebView'の' UIScrollView'の代理人として自分自身を設定すると、 'UIWebView'を踏んでいます。それはできません。 –

+0

次に、必要な作業を行った後、すべてのデリゲートコールをwebviewに転送します。私。自己をデリゲートとして保持し、デリゲートメソッドで同じメッセージとパラメータをwebviewに送信します。 – ikuramedia

0

UIWebViewの上に別の見出しとしてヘッダーを挿入できないのはなぜですか?なぜそれはサブビューでなければならないのですか?

+0

これはありません。私はあなたがどこからそれを得ているのか分かりません。 – Greg

関連する問題