从我的Custom Keyboard
我想知道用户是否在其文本中选择了某些内容(及其范围)。根据文档,我认为我可以利用UITextInputDelegate
协议提供的回调:
但是,永远不会调用selectionWill/DidChange
回调。如果我更改了文本中的选择,则会触发其他回调(textWill/DidChange
)。由于这已经很奇怪,我遇到的问题是textInput
param总是为零。但我需要它,因为我想访问selectedTextRange
来解决我的问题。
任何想法如何在自定义键盘实现中检索当前选定的文本和/或其范围?
答案 0 :(得分:4)
如果我没有完全错,那是不可能的。 (你指的是iOS 8上自己的键盘应用程序;不是你自己的应用程序中你自己的键盘的实现,对吧?)
您的键盘无法访问用户实际写入的文本,因为UITextView位于一个完全不同的应用程序中。
来源:https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html - “自定义键盘不可用的系统键盘功能”,第7段
因为自定义键盘只能在其主视图中绘制 UIInputViewController对象,它不能选择文本。文字选择是 在使用键盘的应用程序的控制下。如果该应用程序 提供编辑菜单界面(例如剪切,复制和粘贴), 键盘无法访问它。自定义键盘无法提供 插入点附近的内联自动校正控件。
如果您在自己的应用程序中引用自己的实现:您是否在IB中选择了正确的类作为文本字段委托?你有没有把UITextInputDelegate添加到类中(你用英文写这个吗?)头文件? 然后应该调用你的委托方法......还有一些示例代码可能很有用;)