随意参考托管在 GitHub 上的示例 Xcode 项目来演示此问题:IAdBannerBugDemo
当在 UITableView 下方和 UITabBar 上方显示 AdBannerView 时,在bannerViewActionDidFinish:
调用之后,AdBannerView 会错误地移动到其父视图的顶部。
我的问题是:
- 是否有有效的解决方法不是手卡?如果是这样,解决方法是什么?
- 这是 iOS SDK 的错误吗?
首先,这是两个说明我的问题的屏幕截图。
- 按下第一个屏幕截图中显示的按钮。
- 等待 iAd 加载。
- 点击 iAd。
- 按全屏 iAd 左上角的黑色 X 关闭 iAd。
- 注意 iAd 移到顶部(第二张截图)
按下显示的按钮并等待 iAd 加载
按下/单击 iAd 横幅以全屏查看广告
关闭全屏 iAd 并注意 iOS SDK 将 iAD 横幅移动到其超级视图的顶部
通过打断点等,我注意到它[UIViewControllerWrapper setFrame:]
负责重新定位 AdBannerView,但这完全超出了我的控制,因为它是 Apple 框架的一部分。
我解决此问题的唯一方法是通过覆盖viewWillLayoutSubviews
负责正确放置 AdBannerView 的任何视图控制器来更正 AdBannerView 的位置。
但即使这种解决方法也会将 AdBannerView 从其父视图的顶部重新定位到正确的位置(在表格视图下方,标签栏上方,包含在表格视图的超级视图中)。
一个好的答案是发布示例代码来说明如何解决这个烦人的问题。
我也在 Apple 的开发者论坛上开设了一个帖子。因此,请随时咨询此线程。