2011-05-16 9 views
3

UIWebView内で発生するアニメーションやその他の画面更新を検出しようとしています。最後の更新後に変更されたUIWebView内の領域の四角形を取得したいと思います。UIWebView:画面更新のトラッキング(ダーティーリージョン)

私が探しているのは、UIWebViewがsetNeedsDisplayInRectに行う呼び出しを「トラップ」する方法です。それを行う方法はありますか?私は何とかUIWebViewの基になるCALayerオブジェクトを、UIWebViewから入ってくるコールをキャッチできるようにサブクラス化できますか?

+0

ちょっとしたアップデート:Objective Cカテゴリ(@implementation CALayer(MyCALayer))を使用して、UIWebViewからCALayerに移動するコールをトラップしようとしました。私はsetNeedsDisplayInRectを含む呼び出しを取得していますが、呼び出しを処理して元のCALayerオブジェクトにリレーする方法がないようです。私は何が欠けていますか?確かにこれを行う方法がありますか? – ldoogy

+0

これが可能かどうかも知りたいです! –

+0

本当に答えが必要です。 – Luke

答えて

0

これを行う良い方法はありません。 UIWebViewのCALayerのスナップショットを取得して以前のスナップショットと比較することができますが、UIWebViewsの信頼できるスナップショットを取得するのに苦労しました。

0

Objective-Cカテゴリ(@implementation CALayer(MyCALayer))を使用します。これは、既にアップデートに基づいているように、UIWebViewからCALayerへの呼び出しをトラップするためです。

次に、Method Swizzlingを使用して、カテゴリの上書きを元のCALayerオブジェクトにリレーします。

+0

この問題は、あなたがすべてのCALayerにやっていることです。 UIWebViewのレイヤーは '+(Class)layerClass'でオーバーライドできます。しかし、実際に変更されているレイヤーはプライベートサブビューの内側にあります。 – Luke

関連する問題