ios – 自定义UITextInput实现不显示多阶段输入建议

ios – 自定义UITextInput实现不显示多阶段输入建议,第1张

概述我有一个自定义的基于UITextInput的文本编辑器.除了通过标记文本进行的多阶段输入外,它的效果非常好. 我标记的区域正确呈现,并插入了标记文本,但键盘上方的候选列表为空白. 例如,这里是日语(假名)键盘,显示标准UITextView的建议: 这是我的自定义编辑器显示相同的标记文本: 我花了几天时间调试这个问题并发现原因是私有类UIKeyboardImpl为方法delegateSupports 我有一个自定义的基于UITextinput的文本编辑器.除了通过标记文本进行的多阶段输入外,它的效果非常好.

我标记的区域正确呈现,并插入了标记文本,但键盘上方的候选列表为空白.

例如,这里是日语(假名)键盘,显示标准UITextVIEw的建议:

这是我的自定义编辑器显示相同的标记文本:

我花了几天时间调试这个问题并发现原因是私有类UIKeyboardImpl为方法delegateSupportsCorrectionUI返回NO

如果我在UIKeyboardImpl上的类别中覆盖此方法并返回YES,则会为我的文本编辑器正确显示多级输入建议.但是,这并没有解决问题的根本原因(并且它不可用).

我还仔细研究了Apple的SimpleTextinput示例代码.这实现了一个基本的Core Text编辑器. SimpleTextinput正确地显示了多阶段输入建议,但是我似乎无法在UITextinput的实现中找到导致它工作和我的中断的单一差异.

(事实上​​,我无法“破坏”SimpleTextinput示例显示多阶段输入的能力.这让我认为我对UITextinput实现的关注是错误的轨道.而且它完全是另外的东西.)

解决方法 好的,这有点令人尴尬.我刚才注意到:

@property(nonatomic,Readonly) UIVIEw *textinputVIEw

discussion

The vIEw that both draws the text and provIDes a coordinate system for
all geometric values in this protocol. (This is typically an instance
of the UITextinput-adopting class.) If this property is unimplemented,
the first vIEw in the responder chain is selected.

在文档中.

我愚蠢地@综合了这个属性并忘了它,这意味着我的UITextinput实现返回了一个nil textinputVIEw.简单地保持未实现只选择响应器链中的第一个视图,如文所述,它为文本系统提供必要的坐标系统来处理自动校正和多级输入建议.

这是经过三天的调试.现在我觉得很蠢.

总结

以上是内存溢出为你收集整理的ios – 自定义UITextInput实现不显示多阶段输入建议全部内容,希望文章能够帮你解决ios – 自定义UITextInput实现不显示多阶段输入建议所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1040115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存