0

随意参考托管在 GitHub 上的示例 Xcode 项目来演示此问题:IAdBannerBugDemo

当在 UITableView 下方和 UITabBar 上方显示 AdBannerView 时,在bannerViewActionDidFinish:调用之后,AdBannerView 会错误地移动到其父视图的顶部。

我的问题是:

  1. 是否有有效的解决方法不是手卡?如果是这样,解决方法是什么?
  2. 这是 iOS SDK 的错误吗?

首先,这是两个说明我的问题的屏幕截图。

  1. 按下第一个屏幕截图中显示的按钮。
  2. 等待 iAd 加载。
  3. 点击 iAd。
  4. 按全屏 iAd 左上角的黑色 X 关闭 iAd。
  5. 注意 iAd 移到顶部(第二张截图

按下显示的按钮并等待 iAd 加载

广告已加载

按下/单击 iAd 横幅以全屏查看广告

按下/单击 iAd 横幅

关闭全屏 iAd 并注意 iOS SDK 将 iAD 横幅移动到其超级视图的顶部

错误插图

通过打断点等,我注意到它[UIViewControllerWrapper setFrame:]负责重新定位 AdBannerView,但这完全超出了我的控制,因为它是 Apple 框架的一部分。

我解决此问题的唯一方法是通过覆盖viewWillLayoutSubviews负责正确放置 AdBannerView 的任何视图控制器来更正 AdBannerView 的位置。

但即使这种解决方法也会将 AdBannerView 从其父视图的顶部重新定位到正确的位置(在表格视图下方,标签栏上方,包含在表格视图的超级视图中)。

一个好的答案是发布示例代码来说明如何解决这个烦人的问题。

我也在 Apple 的开发者论坛上开设了一个帖子。因此,请随时咨询此线程。

4

1 回答 1

1

当使用 iAd 横幅和 uitableviewcontroller 时,您可以将其放在 tableview 的标题中,因为 table viewcontroller 控制 tableview 的框架和边界。如果要在表格视图上方或下方添加横幅,则必须有一个 uiviewcontroller 并将 uitableview 添加到其中,以便您可以从 uiviewcontroller 控制表格视图的框架和边界。横幅将保留在您放置的位置,并且您必须为表格视图框架和边界设置动画,横幅动画进出视图。

没有使用 uitableviewcontroller 的解决方法。而使用 uiviewcontroller 只能使用动态 tableciew。静态表视图仅在 uitableviewcontroller 中。我希望这有帮助!

于 2013-04-23T00:11:07.683 回答