iOS 8键盘扩展:UIInputViewController textDocumentProxy连接无效

时间:2015-07-05 11:03:48

标签: ios objective-c keyboard uiinputviewcontroller textdocumentproxy

在iOS 8键盘扩展程序中,我添加了UITextField,因此用户可以在键盘内搜索表情符号或其他元素。

在用户正在键入的情况下,例如在Notes.app中,用户点击键盘扩展上的搜索字段以开始搜索。点按时,扩展程序会记录:

  

- [UIKeyboardInputManagerClient handleError:forRequest:]将重试发送syncToKeyboardState:completionHandler:to keyboard daemon   收到错误域= NSCocoaErrorDomain Code = 4099“The   操作无法完成。 (可可错误4099.)“(连接   名为com.apple.TextInput的服务无效。)   UserInfo = 0x170276e00 {NSDebugDescription =与服务的连接   名为com.apple.TextInput的名称无效。}

     

请检查kbd崩溃日志。 - [UIKeyboardInputManagerClient   handleError:forRequest:]之后关闭与键盘守护进程的连接   发送连续两次失败

在此之后,用户点击Notes.app文本以返回编辑它。现在,使用insertText:发送到textDocumentProxy的任何文本仍然会转到我的键盘扩展名UITextField,而不是Notes.app文本。

点击时,仍会从Notes文本中调用textDidChange:委托方法。此外,textDocumentProxys属性documentContextBeforeInputdocumentContextAfterInput包含Notes.app文本中的正确文本。

看起来UITextField现在是textDocumentProxy的“监听器”,它应该不是。

我尝试过但没有成功:

  • userInteractionEnabled = NO
  • 上设置UITextField {li> resignFirstResponder UITextField {li> endEditing:YES UITextField
  • 监视textDocumentProxy属性的更改,但它不断引用相同的对象。

解决方法是选择另一个键盘,然后返回键盘。然后恢复连接,一切恢复正常。 (直到用户再次点击我的UITextField)。

在App Store中,我发现了几个具有相同问题的自定义键盘应用程序。这让我觉得它无法解决。但是,我还发现自定义键盘应用程序工作正常,用户可以毫无问题地跳转文本字段。

有什么想法吗?

0 个答案:

没有答案