iOS 自定义键盘无法 return 聚焦到应用的文本字段

iOS Custom keyboard can't return focus to app's textfield

我正在为 iOS 开发自定义键盘,它将有自己的搜索字段(类似地由 PopKey 实现)。

我的键盘的文本字段可以使用 becomeFirstResponder 获得焦点,我可以使用 resignFirstResponder 放弃它。但是,在我放弃焦点之后,尽管触摸了表单,但主机应用程序却很难重新获得焦点。应用程序的文本字段仍会显示闪烁的文本光标。

有什么想法吗?谢谢

解决方案是黑客攻击,截至目前,您无法真正将焦点移回宿主应用程序。

  • 子类 a UITextField 及其委托实现 textFieldShouldBeginEditing 通过 returning NO.

  • 添加一个 BOOL 属性 isSelectedtouchesBegan 中设置为 YES(不要与默认值混淆selected 属性)

  • 在键盘的 keyPressed 方法中,如果 searchField.isSelected,请操作 searchField.text。否则,像往常一样操作 textDocumentProxy
  • 添加一个 clear 按钮和擦除 searchField.textsearchField.isSelected 的方法,允许任何进一步的击键 return 到 textDocumentProxy
  • 添加复制闪烁类型光标的动画