Xcode13+编译tvOS项目后tab bar滚动及分栏控制器无法访问问题
使用Xcode13及以上版本编译运行tvOS项目时,会出现tab bar跟随scrollView滚动、移动焦点无法访问split view controller的问题。该问题在Xcode13以下版本不会出现,但更新Monterey系统后无法使用旧版Xcode,具体复现前置条件和问题如下:
前置条件
- 创建一个搭载tab bar controller的tvOS应用
- 在其中一个标签页内放置split view controller
- 在折叠态的master view controller中添加一个table view
问题描述
问题1
将焦点向左移动以唤起折叠的master view controller的操作失效,侧边栏无法拉出,仅能通过点击返回键(原菜单键)唤起。
问题2
在master view controller的tableView中向下滚动时,顶部的tab bar会同步被滚动隐藏。此前该效果仅可通过设置tabBarObservedScrollView实现,目前该API已废弃,该滚动效果会自动触发,即便调用[self setContentScrollView:nil forEdge:NSDirectionalRectEdgeAll]也无法禁用该行为。
请问是否有其他开发者遇到相同问题?该问题的成因是什么,是否有可行的解决方案?已向苹果反馈该问题。
补充:截至目前
setContentScrollView:forEdge:的苹果官方文档内容为空。
问题更新
经过测试,即使主动将上述属性设为nil,系统仍会自动为其赋值,如下图所示:
进一步排查发现,该问题仅在Xcode13+编译、tvOS15+系统上运行时出现,系统会自动为所有UITableViewController填充上述属性,将UITableViewController替换为内部嵌套UITableView的UIViewController可临时规避该问题。
内容的提问来源于stack exchange,提问作者Matteo Gobbi

