4

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

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

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

4

1 回答 1

5

我的UIInputViewController支持UITextInput协议,它有一个textDidChange方法。从textDidChange,我self.textDocumentProxy与自己的self.currentTextProxy财产进行比较。当两者不同时,我更新self.currentTextProxy,然后根据self.textDocumentProxy's刷新我的 GUI UITextInputTraits

于 2014-11-13T02:32:31.470 回答