2014-10-04 39 views
4

从我的Custom Keyboard我想知道用户是否选择了他们的文本内容(和它的范围)。以下的文档,我想我可以利用由UITextInputDelegate协议提供的回调:自定义键盘:获取选定的文本

  • selectionWillChange(为textInput:UITextInput)
  • selectionDidChange(为textInput:UITextInput)
  • textWillChange(为textInput:UITextInput) (文本输入:UITextInput)

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

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

+0

你可以发布一些代码? – nikhil84 2014-10-10 06:11:05

+0

你能指导我如何从输入视图中获取文本。我在textInput委托中获取null。在此先感谢 – 2014-12-06 19:48:40

+0

@ImranAhmed:这实际上是这个问题的关键。不幸的是,它似乎不可能(对于自定义键盘) – cweinberger 2014-12-07 11:06:52

回答

4

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

键盘无法访问用户实际写入的文本,因为UITextView是一个完全不同的应用程序。

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

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


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

+1

其实我可以访问用户写的文字。我无法获取有关用户当前选择的信息。作为参考,我添加了Apple的相关短语。感谢您的回复 - 这对我来说已经足够了。 – cweinberger 2014-10-13 08:12:10