【问题标题】:Custom Keyboard: get selected text自定义键盘:获取选定的文本
【发布时间】:2014-10-04 09:28:25
【问题描述】:

来自我的Custom Keyboard,我想知道用户是否在他们的文本中选择了某些内容(以及它的范围)。按照文档,我认为我可以利用UITextInputDelegate 协议提供的回调:

  • selectionWillChange(textInput: UITextInput)
  • selectionDidChange(textInput: UITextInput)
  • textWillChange(textInput: UITextInput)
  • textDidChange(textInput: UITextInput)

但是,selectionWill/DidChange 回调永远不会被调用。如果我更改文本中的选择,则会触发其他回调 (textWill/DidChange)。由于这已经很奇怪,我遇到的问题是 textInput 参数始终为零。但我需要它,因为我想访问selectedTextRange 来解决我的问题。

任何想法如何在自定义键盘实现中检索当前选定的文本和/或其范围?

【问题讨论】:

  • 你能发布一些代码吗?
  • 您能否指导我如何从输入视图中获取文本。我在 textInput 委托中得到空值。提前致谢
  • @ImranAhmed:这实际上是这个问题的重点。不幸的是,这似乎是不可能的(对于自定义键盘)
  • 嗨,非常感谢您的回复。我能够从输入视图中获得刺痛。与您在下面的评论中提到的相同。但我不知道为什么有些人害怕分享一些有用的代码。这是我用来从输入视图中获取字符串的代码。 NSString *str=[self.textDocumentProxy documentContextBeforeInput];

标签: ios delegates custom-keyboard


【解决方案1】:

如果我没有完全错,这是不可能的。 (您指的是 iOS 8 上自己的键盘应用程序;不是在您自己的应用程序中实现您自己的键盘,对吧?)

您的键盘无法访问用户实际编写的文本,因为 UITextView 位于完全不同的应用程序中。

来源:https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html - “自定义键盘无法使用系统键盘功能”,第 7 段

因为自定义键盘只能在其主视图中绘制 UIInputViewController 对象,它不能选择文本。文本选择是 在使用键盘的应用程序的控制下。如果那个应用 提供编辑菜单界面(如剪切、复制和粘贴), 键盘无法访问它。自定义键盘无法提供 插入点附近的内联自动更正控件。


如果您在自己的应用程序中引用自己的实现:您是否在 IB 中选择了正确的类作为文本字段委托?你有没有把 UITextInputDelegate 添加到类的头文件中(你是用英文这样写的吗?)? 然后你的委托方法应该被调用......还有一些示例代码可能很有用;)

【讨论】:

  • 实际上我可以访问用户编写的文本。我只是无法获得有关用户当前选择的信息。作为参考,我添加了来自 Apple 的相关短语。感谢您的回复 - 这对我来说已经足够了。
猜你喜欢
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 2019-04-09
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多