我想一个ADBannerView对象放到我的UITableView屏幕静态,什么意思是我希望它一直呆在我的工具栏(self.navigationController.toolbar)以上,即使用户正在滚动的tableview。 我已经通过ADBannerView将作为一个子视图到我的工具栏解决了这个并赋予它的框架起源负值:
[self setBannerViewSize];
[self.navigationController.toolbar addSubview:bannerView];
唯一的问题是:我不能点击并打开iAd的这样 - 我能看到的旗帜,但是当我在敲打什么也没有发生。
由于我也使用refreshControl,选择使用一个UIViewController不是UITableViewController中,并添加一个手动的tableView不会为我工作。 有没有其他办法,我可以让我的ADBannerView在我的表视图控制器静态展示并仍然可点击?
感谢您的咨询!
好极了!! 毕竟我成功解决了由自己这(真烦人)问题(和大量的阅读周围)!
首先,我发现这真的改变世界的岗位 。 基本上,这后处理与一个UITableViewController使用self.view其的tableView财产,所以重写的tableView财产(或手动合成吧)加给self.view一个新的视图(从应用程序)和添加的tableView作为其子视图将会使主题有可能达到的tableView 真正的上海华。
但是,这仍然没有解决我的问题,虽然我知道它会,因为这一切是有意义的。 我bannerView出现在正确的地点(和固定),但它仍然在单击时没有做任何事情。 但是有我不知道的第二个次要的事情:
正如我在阅读这篇文章一个子视图的上海华不仅必须userInteractionEnabled,但也有不透明的backgroundColor。 因为我superviews背景色设置为[的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
}
BannerViewController在苹果的iAdSuite示例代码很优雅地解决了这个问题:
https://developer.apple.com/library/ios/samplecode/iAdSuite/Introduction/Intro.html
我认为你应该使用一个容器视图,并在IB设置好了。 您可以在工具栏和ADBannerView添加到您的导航控制器的根视图控制器的视图的底部。 装满一个集装箱鉴于空间的其余部分 - 这会自动给你一个内嵌视图控制器。 您应该删除此一个,然后从容器着眼于tableViewController一个tableViewController和控制拖挂钩嵌入SEGUE拖动。