0

この問題を示す GitHub でホストされているサンプル Xcode プロジェクトを自由に参照してください: IAdBannerBugDemo

UITableView の下と UITabBar の上に表示されている AdBannerView がある場合、bannerViewActionDidFinish:が呼び出された後、AdBannerView が誤ってそのスーパービューの上部に移動されます。

私の質問は次のとおりです。

  1. 手詰まりではないこれに対する有効な回避策はありますか? もしそうなら、回避策は何ですか?
  2. これは iOS SDK のバグですか?

まず、私の問題を説明する 2 つのスクリーンショットを示します。

  1. 最初のスクリーンショットに示されているボタンを押します。
  2. iAd が読み込まれるまで待ちます。
  3. iAd をクリックします。
  4. フルスクリーン iAd の左上隅にある黒い X を押して、iAd を閉じます。
  5. iAd が上部に移動することに注意してください ( 2 番目のスクリーンショット)

表示されているボタンを押して、iAd がロードされるのを待ちます

広告が読み込まれました

広告をフルスクリーンで表示するには、iAd バナーを押すかクリックします

iAd バナーを押す/クリックする

フルスクリーン iAd を閉じて、iOS SDK が iAD バナーをそのスーパービューの上部に移動したことに注意してください

バグのイラスト

ブレークポイントなどにヒットすることで[UIViewControllerWrapper setFrame:]、それが AdBannerView の再配置に関与していることに気付きましたが、それは Apple のフレームワークの一部であるため、完全に制御できません。

この問題を回避する唯一の方法は、AdBannerViewviewWillLayoutSubviewsを適切に配置する責任があるビュー コントローラーをオーバーライドして、AdBannerView の場所を修正することです。

ただし、この回避策でも、AdBannerView がスーパービューの上部から正しい場所 (テーブル ビューの下、タブ バーの上、テーブル ビューのスーパービューに含まれる) に再配置されます。

良い答えは、このしつこい問題を克服する方法を示すサンプル コードを投稿するものです。

Apple の Developer Forums でもスレッドを開始しました。ですから、このスレッドを参照してください。

4

1 に答える 1

1

iAd バナーと uitableviewcontroller を使用する場合、tableview のヘッダーに配置できます。これは、table viewcontroller が tableview のフレームと境界を制御するためです。テーブルビューの上または下にバナーを追加したい場合は、uiviewcontroller を用意し、そこに uitableview を追加して、uiviewcontroller からテーブル ビューのフレームと境界を制御できるようにする必要があります。バナーは配置した場所に残り、テーブルビューのフレームと境界をアニメーション化し、バナーがビューの内外でアニメーション化する必要があります。

uitableviewcontroller を使用した回避策はありません。また、uiviewcontroller を使用すると、動的な tableciew のみを使用できます。静的テーブル ビューは、uitableviewcontroller にのみあります。これが役立つことを願っています!

于 2013-04-23T00:11:07.683 に答える