0

好的,这很奇怪,我可以很容易地用一个新项目重现它。

这是设置:
我有一个 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

    • 在模拟器中运行项目

      • 在纵向模式下,单击根列表按钮以弹出弹出窗口

      • 注意编辑按钮是可点击的

      • 点击搜索框 - 我们进入搜索模式

      • 单击取消按钮退出搜索模式

      • 注意编辑按钮不再起作用


那么,谁能帮我弄清楚为什么会这样?

谢谢,

标记

4

2 回答 2

0

好的,得到了​​ Apple 开发者技术支持的答复。他们对其进行了调查,发现这是 UIPopoverController 中的一个错误。他给了我一种解决方法,但在取消搜索后导航栏中的右键最终会滑过屏幕。但是,至少它解决了这个问题。他还建议我向 Apple 发送错误报告,我也这样做了。希望他们能在下一版本的 SDK 中解决这个问题。

以下是 Apple 工程师回复的相关部分的副本:

我已经创建了自己的项目并深入了解了正在发生的事情,它看起来像是 UIPopoverController 中的一个错误,在 UISearchBar 被关闭后,导航栏中的某些东西被阻挡了。

我现在找到了一种解决方法,尽管发生的动画并不是非常理想: - 使用 UISearchBarDelegate 的 –searchBarCancelButtonClicked: 方法并添加以下内容:

self.navigationItem.rightBarButtonItem = nil;
self.navigationItem.rightBarButtonItem = self.editButtonItem;

正如我所说,弹出框似乎正在将按钮推到导航栏上,因此它可能不是您要查找的内容。

于 2010-08-12T14:42:51.840 回答
0

我尝试了提到的 rightBarItem 技术,但它对我不起作用。我不得不这样做(这也是一个黑客真的)

[self.navigationController setNavigationBarHidden:YES animated:NO];
[self.navigationController setNavigationBarHidden:NO animated:NO];

这可能是因为我的 UINavigationBar 与弹出框不统一,但我不能肯定。

于 2011-01-04T00:48:57.970 回答