この問題を示す GitHub でホストされているサンプル Xcode プロジェクトを自由に参照してください: IAdBannerBugDemo
UITableView の下と UITabBar の上に表示されている AdBannerView がある場合、bannerViewActionDidFinish:
が呼び出された後、AdBannerView が誤ってそのスーパービューの上部に移動されます。
私の質問は次のとおりです。
- 手詰まりではないこれに対する有効な回避策はありますか? もしそうなら、回避策は何ですか?
- これは iOS SDK のバグですか?
まず、私の問題を説明する 2 つのスクリーンショットを示します。
- 最初のスクリーンショットに示されているボタンを押します。
- iAd が読み込まれるまで待ちます。
- iAd をクリックします。
- フルスクリーン iAd の左上隅にある黒い X を押して、iAd を閉じます。
- iAd が上部に移動することに注意してください ( 2 番目のスクリーンショット)
表示されているボタンを押して、iAd がロードされるのを待ちます
広告をフルスクリーンで表示するには、iAd バナーを押すかクリックします
フルスクリーン iAd を閉じて、iOS SDK が iAD バナーをそのスーパービューの上部に移動したことに注意してください
ブレークポイントなどにヒットすることで[UIViewControllerWrapper setFrame:]
、それが AdBannerView の再配置に関与していることに気付きましたが、それは Apple のフレームワークの一部であるため、完全に制御できません。
この問題を回避する唯一の方法は、AdBannerViewviewWillLayoutSubviews
を適切に配置する責任があるビュー コントローラーをオーバーライドして、AdBannerView の場所を修正することです。
ただし、この回避策でも、AdBannerView がスーパービューの上部から正しい場所 (テーブル ビューの下、タブ バーの上、テーブル ビューのスーパービューに含まれる) に再配置されます。
良い答えは、このしつこい問題を克服する方法を示すサンプル コードを投稿するものです。
Apple の Developer Forums でもスレッドを開始しました。ですから、このスレッドを参照してください。