UISplitViewController 维护键盘快捷键的详细第一响应者

Loï*_*iol 5 keyboard-shortcuts uikit first-responder ios

我正在努力在我的 iOS 应用程序中添加对键盘快捷键的支持。它由 组成UISplitViewController,快捷方式由其详细视图控制器提供。UITableView主控制器由带有和UISearchBar作为表视图标头(使用)的视图控制器组成UISearchController

虽然我这样做时效果很好showDetailViewController,但我意识到在许多情况下,详细视图控制器会失去第一响应者,因此快捷方式不再起作用。

第一响应者丢失的示例:

  • 搜索后(UISearchBar暂时担任第一响应者)
  • 在多任务处理(拆分视图)中打开第二个应用程序并将其关闭后

我的问题似乎是详细视图控制器失去了第一响应者并且无法将其恢复。

阅读文档后,我发现我可以nextResponder在所有响应程序中进行重写,以便它们指定详细视图控制器。但这似乎有些过分了,因为有很多潜在的响应者......

您认为解决这个问题的最佳方法/做法是什么?

感谢您的帮助!

mal*_*hal 1

首先,您应该确保您从 中DetailViewController返回并致电。WWDC 2020 支持应用程序中的硬件键盘对此进行了介绍。这将解决编辑搜索字段后进行选择时详细控制器未成为响应者的问题。truecanBecomeFirstResponderbecomeFirstResponderviewDidAppear

detailViewController.becomeFirstResponder()然后,您可以通过在搜索栏文本字段结束编辑时调用来改进这一点。

https://developer.apple.com/documentation/uikit/uiresponder/1621113-becomefirstresponder

因为在多任务处理之后,你也许可以倾听UIViewControllerShowDetailTargetDidChangeNotification并做同样的事情。

https://developer.apple.com/documentation/uikit/uiviewcontrollershowdetailtargetdidchangenotification