在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属性documentContextBeforeInput
和documentContextAfterInput
包含Notes.app文本中的正确文本。
看起来UITextField
现在是textDocumentProxy的“监听器”,它应该不是。
我尝试过但没有成功:
userInteractionEnabled = NO
UITextField
{li> resignFirstResponder
UITextField
{li> endEditing:YES
UITextField
textDocumentProxy
属性的更改,但它不断引用相同的对象。解决方法是选择另一个键盘,然后返回键盘。然后恢复连接,一切恢复正常。 (直到用户再次点击我的UITextField)。
在App Store中,我发现了几个具有相同问题的自定义键盘应用程序。这让我觉得它无法解决。但是,我还发现自定义键盘应用程序工作正常,用户可以毫无问题地跳转文本字段。
有什么想法吗?