问题标签 [textdocumentproxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nsstring - 如何在 iOS 的 textDocumentProxy 中删除最后一个字母之前的字母?
我们可以使用deleteBackward
inTextDocumentProxy
删除最后一个字母。
现在我需要删除最后一个字母的字母。
例如。Apple
,我想删除l
之前的信e
。
我该怎么做?
ios - iOS 8 textDocumentProxy - 能够删除多个空格?
我想self.textDocumentProxy
在使用我的扩展时删除多个空格KeyboardViewController
,并且想知道是否有 Apple 支持的方法专门执行此操作?
到目前为止,我一直在使用一种非常“hacky”的方式来执行以下操作(这里它删除了在 上找到的所有以前的字符textDocumentProxy
):
这个问题在于方法deleteBackward
,根据给出的提示,它总是删除documentContextBeforeInput
它被告知要删除的总次数的大约一半(它非常可靠,尤其是当超过 20 个字符时)。由于这是相当不可靠的,我想知道是否有一种方法可以轻松删除多个空格,或者所有发短信的textDocumentProxy.documentContextBeforeInput
谢谢!
ios - iOS:自定义键盘:我想将图像发送到 textDocumentProxy(输入控件)
我正在实现只有图像的自定义键盘,并希望在单击图像时将图像发送到 textDocumentProxy/input 控件,例如 textview,但不能克服它。到目前为止,我能够将文本/字符串发送到输入控件,但不能发送图像。
是否可以将图像发送到输入控件?
任何建议或解决方案都将受到高度赞赏。
ios - iOS 8 键盘扩展:UIInputViewController textDocumentProxy 连接无效
在 iOS 8 键盘扩展上,我添加了一个UITextField
,以便用户能够在键盘内搜索表情符号或其他元素。
在用户正在键入的情况下,例如在 Notes.app 中,用户点击键盘扩展上的搜索字段开始搜索。点击后,扩展程序会记录:
-[UIKeyboardInputManagerClient handleError:forRequest:] 将在收到错误 Domain=NSCocoaErrorDomain Code=4099 "The operation could not be completed. (Cocoa error 4099.)" 后重试发送 syncToKeyboardState:completionHandler: 到键盘守护进程(连接到名为 com 的服务.apple.TextInput 无效。) UserInfo=0x170276e00 {NSDebugDescription=与名为 com.apple.TextInput 的服务的连接无效。}
请检查 kbd 崩溃日志。-[UIKeyboardInputManagerClient handleError:forRequest:] 在连续两次发送失败后关闭与键盘守护进程的连接
在此之后,用户点击 Notes.app 文本以返回编辑它。现在使用发送到 textDocumentProxy 的任何文本insertText:
仍然会转到我的键盘扩展UITextField
而不是 Notes.app 文本。
当textDidChange:
点击它时,仍会从 Notes 文本中调用委托方法。此外,textDocumentProxys 属性documentContextBeforeInput
并documentContextAfterInput
包含来自 Notes.app 文本的正确文本。
看起来UITextField
现在是 textDocumentProxy 的“侦听器”,但它不应该是。
我试过了,没有成功:
- 设置
userInteractionEnabled = NO
在UITextField
resignFirstResponder
在UITextField
endEditing:YES
在UITextField
- 监视
textDocumentProxy
属性的更改,但它一直引用同一个对象。
一种解决方法是选择另一个键盘,然后返回我的键盘。然后连接恢复,一切恢复正常。(直到用户再次点击我的 UITextField)。
在 App Store 中,我发现了几个具有相同问题的自定义键盘应用程序。这使我认为这是无法解决的。但是,我还发现自定义键盘应用程序运行良好,用户可以毫无问题地在文本字段中跳转。
有任何想法吗?
ios - 在应用程序中使用自定义 InputViewController
我目前的任务是 iOS 键盘扩展。现在,要通过 App Store Review,包含应用程序必须提供一些“真实”内容。我想过让用户在“设置”中启用它之前测试键盘。所以我的故事板看起来像这样(减少显示相关的东西):
这一切正常,键盘显示在容器中,但是 - 由于textDocumentProxy
键盘视图控制器中的对象没有附加到任何东西 - 用户看不到他/她正在输入的内容。
现在我正在寻找一种将键盘“附加”到文本字段的方法,同时保持系统键盘不受干扰,以便用户可以在自定义键盘上键入。
我已经设法通过将以下函数附加到文本字段的editing did begin
操作来移除系统键盘。
ios - 带有 UITextField 的自定义键盘扩展
我有自定义键盘扩展,其中包含 UITextField。我可以切换到UITextField
的文本输入,但无法切换回self.textDocumentProxy
. 有谁知道,如何做类似的事情[self.textDocumentProxy becomeFirstResponder]
?
(顺便说一句,“GIF 键盘”应用似乎提供了这种可能性)
ios - 使用 dispatch_async 时的 EXC_BAD_ACCESS。如何防止物体被释放?
我有以下功能:
其中deleteCounter
是一个默认设置为零的整数。
该代码应该起作用,因此当按下我的自定义键盘应用程序扩展上的删除键时,如果它仍在循环,它将不会调用删除循环,从而防止过多的方法调用。
代码似乎工作正常,但如果我在很长一段时间内快速点击删除按钮(从而重复调用此函数),我会收到以下错误:
Thread 3: EXC_BAD_ACCESS(code = 1,address=0x10)
在这条线上:
我从不修改该self.textDocumentProxy
对象,因为它只是 IOS 为您可以随时访问的键盘扩展提供的默认对象。
在阅读了EXC_BAD_ACCESS
错误之后,我发现这可能是因为该self.textDocumentProxy
对象在某个时候从内存中释放了。
如何防止self.textDocumentProxy
被释放,或者如何确保我始终可以获得对象的未发布副本?
更新:
我启用了僵尸对象,我收到以下错误消息:
self.textDocumentProxy
这似乎证实了我正在取消分配的怀疑。
ios - IOS 会在 UI 更新时收到通知。
我有一个自定义键盘扩展。按下删除键时调用此函数:
我认为这dispatch_async
无关紧要,但我将其包括在内,以防万一。
问题是,即使我的控制台在循环完成后打印“删除结束”,文本字段的 UI 也不会更新,直到一两秒过去。
似乎在召唤
(self.textDocumentProxy as UIKeyInput).deleteBackward()
不会立即删除角色并更新 UI。
当 UI 实际更新时如何通知我?
ios - 每次调用非常简单的方法时分配和不释放的内存
在 IOS 键盘应用程序扩展中按下删除按钮时,我有以下方法被调用:
但是,每次调用此方法时,我的键盘内存使用量都会增加 1-2mb 并且不会回落。这很快就会导致崩溃。
我没有在这个线程中分配或取消分配任何对象,所以我不确定为什么会出现大量内存泄漏。
更新:
我改为dispatch_get_main_queue()
静态变量:
并用于mainqueue
代替,dispatch_get_main_queue
但这并没有做任何事情。
更新 2:
我添加了一个名为的变量tempProxy
,每次调用 delete 时都会创建该变量:
let tempProxy = (self.textDocumentProxy as UIKeyInput)
然后在dispatch_async
我用这个:
我这样做是因为我听说引用self
可能会导致内存保留。
更新 3:
我变了:
到一个print()
声明。
内存使用量现在少了很多。但是,我对为什么仍然没有释放内存感到困惑。