かなり昔に書かれたObjective-Cソースコードで、iOS14になってから発生したバグについてです。
何が起きたか
UITableViewCellサブクラスの実装で、コードでレイアウトしていたソースがありました。
こんな感じです。
- (void)awakeFromNib {
[super awakeFromNib];
UIButton *button = [[UIButton alloc] init];
[button addTarget:self action:@selector(doSomething:) forControlEvents:UIControlEventTouchUpInside];
[self addSubView: button];
}
このボタンが、iOS14ではなぜか押せなくなりました。
原因
iOS14からは、UITableViewCell.contentView(UITableViewCellContentView)がUITableViewCellの大きさになっており、かつ一番手前に来るようになりました。
なので、上記のソースではUITableViewCell
自体にaddSubView
していたため、UIButtonよりも前面にUITableViewCellContentView
が来てしまい、UIButtonが押せなくなりました。
解決方法
//[self addSubView: button];
[self.contentView addSubView: button];
これで押せるようになります。
参考資料