わーい!!結局のところ、私はこの (本当に厄介な) 問題を自分で解決することに成功しました (そして、たくさん読んで)!
最初に、この本当に世界を変える投稿を見つけました。基本的に、この投稿は、UITableViewController がその tableView プロパティに self.view を使用するというトピックを処理するため、tableView プロパティをオーバーライドする (または手動で合成する) ことに加えて、(アプリケーションから) self.view に新しいビューを与え、そのサブビューとして tableView を追加すると、tableViewの実際のスーパービューに到達することができます。
しかし、それでも問題は解決しませんでした。すべてが理にかなっているからです。私の bannerView は正しい場所に表示されました (そして修正されました) が、クリックしても何もしませんでした。しかし、私が知らなかった 2 番目のマイナーなことがありました。
この投稿で読んだように、サブビューのスーパービューは userInteractionEnabled である必要があるだけでなく、非透明な backgroundColor も持つ必要があります。スーパービューの背景色が [UIColor clearColor] に設定されていたため、すべてが機能しませんでしたが、backGroundColor をたとえば blackColor に設定すると、問題全体が解決しました。:)
したがって、私のコードは次のようになります。
@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
}