好的,这很奇怪,我可以很容易地用一个新项目重现它。
这是设置:
我有一个 UISplitViewController。在左侧,我有一个 UITabBarController。在这个标签栏控制器中,我有两个 UINavigationController。在导航控制器中,我有 UITableViewControllers。这些表视图上有搜索栏。
好的,这种设置发生的情况是,如果我处于纵向模式并在弹出窗口中显示此视图,并且我在其中一个表视图中开始搜索并取消它,导航栏将变得无响应。也就是说,不能点击“返回”按钮以及右侧按钮。
如果我在横向模式下做同样的事情,所以我们不在弹出窗口中,这不会发生。导航栏保持响应。
因此,问题似乎只发生在弹出框内。
我还注意到,如果我进行搜索但单击搜索结果中的某个项目,最终会将某些内容加载到拆分视图的“详细视图”并关闭弹出框,然后返回弹出框然后单击搜索的取消按钮,导航栏是响应式的。
我的应用程序是一个通用应用程序,在 iPhone 界面中使用相同的选项卡栏控制器,它在那里工作而没有这个问题。
正如我上面提到的,我可以通过一个新项目轻松重现这一点。如果您想自己尝试,请按照以下步骤操作:
开始新项目 - 拆分视图
创建新的 UITableViewController 类(我命名为 TableViewController)
取消注释 viewDidLoad 方法以及 viewDidLoad 中的 rightBarButtonItem 行(所以我们将在导航栏中有一个编辑按钮)
输入要从 numberOfSectioinsInTableView 和 numberOfRowsInSection 方法返回的任何值
打开 MainWindow.xib 并执行以下操作:
请注意,您需要在中间的“查看模式”中查看 xib,以便您可以展开项目的内容
将 Tab Bar Controller 拖入 xib 以替换 Navigation Controller 项
将导航控制器作为标签栏控制器下的另一个项目拖到 xib 中
删除标签栏控制器下的另外两个视图控制器(所以,现在我们的标签栏上只有一个导航控制器)
在导航控制器内部,拖入一个 Table View Controller 并用它来替换 View Controller(Root View Controller)
将新的 Table View Controller 的类更改为上面创建的类(对我来说是 TableViewController)
双击新建的 Table View Controller 下的 Table View 将其打开(会显示在拆分视图控制器内的标签栏中)
将“搜索栏和搜索显示”拖到表格视图上
保存xib
在模拟器中运行项目
在纵向模式下,单击根列表按钮以弹出弹出窗口
注意编辑按钮是可点击的
点击搜索框 - 我们进入搜索模式
单击取消按钮退出搜索模式
注意编辑按钮不再起作用
那么,谁能帮我弄清楚为什么会这样?
谢谢,
标记