获取 UISplitViewController 的 masterview 控制器的显示隐藏事件

Posted

技术标签:

【中文标题】获取 UISplitViewController 的 masterview 控制器的显示隐藏事件【英文标题】:Get show hide event of masterview controller for UISplitViewController 【发布时间】:2014-12-05 07:18:29 【问题描述】:

我正在做一个项目,它是架构中的 Master-Detail,它是一个通用应用程序。我的 DetailViewController 导航栏中有一个搜索控件。当我开始搜索时,同时如果我滑动/点击左栏按钮以显示MasterViewController,则键盘不会关闭。

我想获得MasterviewController 的显示/隐藏事件。

【问题讨论】:

我的建议有效吗? makboney 我添加了屏幕排序和演示项目来解决您的问题 【参考方案1】:

我有办法解决您的问题 下面是一个委托方法,当用户滑动以显示或隐藏主视图时将调用它,您可以在其中编写隐藏键盘的代码代码:

- (void)splitViewController:(UISplitViewController *)svc willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode NS_AVAILABLE_ios(8_0)

    // Write code to hide keyboad
    // --------- Code is not tested but it must work ---------------------------
     [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
    // -------------------------------------------------------------------------


示例项目Link

输出Having bugSolve bug

测试步骤 1] 以纵向模式打开项目。 2] 从左向右滑动以打开主视图。 3] 选择“搜索”。 4] 从详细视图中选择“嵌入导航栏中的搜索栏”。 5] 点击搜索栏。 6] 从左向右滑动以打开主视图。 7] 键盘将隐藏并显示 materview。

【讨论】:

感谢 Jageen 的回复,我尝试了您的代码,但没有成功。我不确定我是否遇到与您相同的问题:( @makboney 键盘没有隐藏吗?或者当您隐藏或显示主视图时我指定的委托没有调用? 没有键盘仍然出现,但代理也被调用 frn 我只是给你代表当主视图将显示或隐藏时调用,我不确定如何隐藏键盘,你的问题是认识一个代表。如果您能给我示例代码,那么我可以帮助隐藏键盘,否则请按照我建议的链接。 @makboney 试试这个 [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

以上是关于获取 UISplitViewController 的 masterview 控制器的显示隐藏事件的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController - 双列样式不起作用

UISplitViewController 一致分隔符

UISplitViewController - 并排或纵向叠加

在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]

将 UIToolBar 放在 UISplitViewController 上方?

UISplitViewController + UISearchController 显示搜索细节