On iOS 26 with Full Keyboard Access enabled, a UITableView(style: .grouped) with custom cells only enumerates section 0 in the Ctrl+Tab focus order (But it works with arrow keys). Cells in sections 1+ are reachable via arrow keys, and canFocusRowAt fires and returns true when arrows spatially reach them — but Tab leaves the table after the last row of section 0 and jumps to the next focus item outside the table.
Same code works correctly on iOS 18.x.
focusGroupIdentifier strategies (single ID on the table, same ID across view/table/every cell, unique ID per cell) have no effect. tableView.allowsFocus is true.
Is this a known iOS 26? Has anyone else run into this?
final class CardCell: UITableViewCell {
private let cardView = UIView()
override init(style: CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
cardView.backgroundColor = .white
cardView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(cardView)
NSLayoutConstraint.activate([
cardView.topAnchor.constraint(equalTo: contentView.topAnchor),
cardView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
cardView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
cardView.trailingAnchor.constraint(equalTo:
contentView.trailingAnchor),
])
}
required init?(coder: NSCoder) { fatalError() }
}
// Table: UITableView(style: .grouped), 3 sections, register CardCell.
// Reproduce on iOS 26 with FKA on → Tab from section 0 leaves the table,
// skipping every cell in sections 1+.