【问题标题】:resignFirstResponder() in Third-Party Keyboards第三方键盘中的 resignFirstResponder()
【发布时间】:2015-10-26 14:10:51
【问题描述】:

我有一个第三方键盘,目前包含一个UISearchBar(即启动时的第一响应者),用户能够搜索内容(即 gif),以便能够复制、粘贴、发送给朋友等.

理论上,在栏中输入文本并按下搜索后,用户应该能够在应用程序的实际UITextView(即消息应用程序中的消息字段)中输入文本,但由于某种原因这不起作用尽管打字有效,但实际上什么也没出现。 我试过searchBar.resignFirstResponder()self.becomeFirstResponder().endEditing(true) 的许多组合都无济于事。 我知道像 Giffy 这样的应用程序可以做到这一点,但我一生都无法弄清楚。 任何帮助将不胜感激。

【问题讨论】:

  • 对不起,我想我不太明白你的问题。当您按回车键时,您在搜索栏中输入的文本不会出现在您的 TextField 中吗?或者这不是将第一响应者切换到 textView?
  • 我的第三方键盘中有一个搜索栏。当我在搜索栏中完成输入时,除了键盘的搜索栏外,我似乎无法在其他任何地方输入。因此,如果我在 Notes 应用程序中,则在完全退出键盘之前,我将无法再输入它。
  • 哦,奇怪,所以当键盘打开时,你不能让其他任何东西成为第一响应者?
  • 是的,除非我关闭搜索栏或不点击尝试输入
  • 这听起来很烦人。真可惜。您是否尝试过弄乱它的代表? (即设置是否正确?)您是否为此键盘使用库或现有 git 项目?

标签: ios swift uitextview uisearchbar ios-keyboard-extension


【解决方案1】:

带有内置搜索栏的键盘扩展通常将其搜索栏实现为 UILabel,添加自定义文本处理行为,根据用户输入修改标签的 text 属性。

【讨论】:

  • 您对此有多大把握?有没有其他方法可以做到这一点?
  • 几乎 100% 确定。据我了解,根本问题是您之前编辑的文本字段不在键盘进程之外,因此无法解决它以再次发送消息以成为第一响应者。我认为确定应用商店中是否有任何键盘可以执行此操作的最简单方法是查看它们中的任何一个是否支持点击并按住以移动光标,以及它是否具有与系统文本字段相同的 UI。
  • 在 Appstore 上查看 Giffage 应用程序(免费)。当键盘启动时,您在搜索栏中输入文本(有一个光标)。搜索 GIF 后,您可以在原始应用程序中输入空格或返回序列。所以在这两者之间发生了一些事情,可以让你做到这一点。但是什么? :o
  • 你误会了,我不是说光标的存在就意味着它是一个系统文本字段,我的意思是能够移动光标与“真实”文本字段相同的手势暗示了这一点。 Giffage 搜索栏是一个 UILabel,有约 100% 的确定性——点击并按住它不会显示放大镜,双击不会显示编辑弹出框。另一个观察:你不能通过点击将焦点从搜索栏切换到前一个文本字段(真实的,在应用程序本身内部)。
  • 我明白你的意思,不用担心 :) 我不是在争论搜索字段的性质,而是在争论如何切换焦点,因为它似乎在搜索按钮一出现就自动进行按下然后用户向上滑动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多