iOS上的键盘扩展是UIInputViewController
类的子类,并具有textDocumentProxy
属性以与基础文档交互。 textDocumentProxy
对象公开了文档的一些重要特征,如自动资本化类型。问题是,键盘扩展如何知道基础文档何时发生变化?
例如,当我点击在消息应用程序中撰写新消息时,“收件人”字段使用与消息正文输入框不同的输入特征。但是,由于在将焦点从一个字段切换到另一个字段时键盘不会消失,因此文本文档代理对象即时更改。键盘扩展可以注意到这种变化吗?
我尝试通过KVO同时观看textDocumentProxy
和[[self textDocumentProxy] autocapitalizationType]
属性,但这不起作用。使用计时器检查autocapitalizationType
属性会显示更改,但显然我想避免使用轮询解决方案。
答案 0 :(得分:5)
我的UIInputViewController
支持UITextInput
协议,该协议具有textDidChange
方法。从textDidChange
开始,我将self.textDocumentProxy
与我自己的self.currentTextProxy
属性进行比较。如果两者不同,我会更新self.currentTextProxy
,然后根据self.textDocumentProxy
的{{1}}刷新我的GUI。