键盘扩展如何知道文档代理已更改?

时间:2014-11-12 08:59:19

标签: ios ios-app-extension ios-keyboard-extension

iOS上的键盘扩展是UIInputViewController类的子类,并具有textDocumentProxy属性以与基础文档交互。 textDocumentProxy对象公开了文档的一些重要特征,如自动资本化类型。问题是,键盘扩展如何知道基础文档何时发生变化?

例如,当我点击在消息应用程序中撰写新消息时,“收件人”字段使用与消息正文输入框不同的输入特征。但是,由于在将焦点从一个字段切换到另一个字段时键盘不会消失,因此文本文档代理对象即时更改。键盘扩展可以注意到这种变化吗?

我尝试通过KVO同时观看textDocumentProxy[[self textDocumentProxy] autocapitalizationType]属性,但这不起作用。使用计时器检查autocapitalizationType属性会显示更改,但显然我想避免使用轮询解决方案。

1 个答案:

答案 0 :(得分:5)

我的UIInputViewController支持UITextInput协议,该协议具有textDidChange方法。从textDidChange开始,我将self.textDocumentProxy与我自己的self.currentTextProxy属性进行比较。如果两者不同,我会更新self.currentTextProxy,然后根据self.textDocumentProxy的{​​{1}}刷新我的GUI。