CGe*_*Gee 3 static subview uitableview ios adbannerview
我想静态地将ADBannerView对象放在我的UITableView屏幕上,这意味着我希望它始终保持在我的工具栏上方(self.navigationController.toolbar),即使用户正在滚动tableview.我已经通过将ADBannerView作为子视图添加到我的工具栏中来解决这个问题,并给出了帧原点的负值:
[self setBannerViewSize];
[self.navigationController.toolbar addSubview:bannerView];
Run Code Online (Sandbox Code Playgroud)
唯一的问题是:我无法点击并以这种方式打开iAd - 我可以看到横幅,但是当我点击它时没有任何反应.
因为我也使用了refreshControl,所以使用UIViewController而不是UITableViewController并手动添加tableView的选项对我来说不起作用.有没有其他方法可以让我的ADBannerView静态显示在我的表视图控制器中并且仍然可以点击?
谢谢你的建议!
好极了!!毕竟我自己成功解决了这个(非常讨厌的)问题(并且大量阅读)!
首先,我发现这个真正改变世界的帖子.基本上这个帖子处理的主题是UITableViewController使用self.view作为其tableView属性,因此覆盖tableView属性(或手动合成)以及给self.view一个新视图(来自应用程序)并添加tableView作为其子视图将使有可能达到tableView 的真实超级视图.
但这仍然没有解决我的问题,虽然我确信会这样,因为这一切都是有道理的.我的bannerView出现在正确的位置(并且已修复)但点击时仍然没有做任何事情.但是还有一件我不知道的小事:
正如我在本文中所读到的,子视图的超级视图不仅必须是userInteractionEnabled,而且还具有非透明的backgroundColor.因为我的超级视图背景颜色被设置为[UIColor clearColor]所有这些都没有用 - 但将其backGroundColor设置为例如blackColor解决了整个问题:bannerView最终得到了可用性!:)
所以,我的代码现在看起来像这样:
@synthesize tableView;
- (void)viewDidLoad
{
[super viewDidLoad];
if (!tableView && [self.view isKindOfClass:[UITableView class]]) {
tableView = (UITableView *)self.view;
}
self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.tableView.frame = self.view.bounds;
[self.view addSubview:self.tableView];
[self resizeTableToFitBanner];
self.view.backgroundColor = [UIColor whiteColor];
[self.view addSubview:bannerView];
// some other code
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4648 次 |
| 最近记录: |