【问题标题】:How does a keyboard extension know that the document proxy has changed?键盘扩展如何知道文档代理已更改?
【发布时间】:2014-11-12 08:59:19
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我完全错过了UITextInputDelegate
    • 这似乎在 iOS 10 中不起作用。看起来 textDocumentProxy 内存地址永远不会改变,它们只是在幕后换出输入字段。您找到仍然有效的解决方案了吗?
    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多