耶!!毕竟,我自己(以及大量阅读)成功地解决了这个(非常烦人的)问题!
首先,我发现了这个真正改变世界的帖子。基本上这篇文章处理 UITableViewController 使用 self.view 作为其 tableView 属性的主题,因此覆盖 tableView 属性(或手动合成它)加上给 self.view 一个新视图(来自应用程序)并添加 tableView 作为它的子视图可以到达tableView的真正superview。
但这仍然没有解决我的问题,尽管我确信它会,因为这一切都是有道理的。我的bannerView 出现在正确的位置(并且已修复),但单击时它仍然没有执行任何操作。但是还有第二件我不知道的小事:
正如我在这篇文章中所读到的,子视图的超级视图不仅必须是 userInteractionEnabled,而且还必须具有不透明的背景颜色。因为我的 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
}