因此,最近我们的键盘扩展程序出现问题,在随附的应用中显示错误的建议。我们发现从上下文(super.textDocumentProxy.documentContextBeforeInput
)返回的文本都是错误的,因为它是苹果组件的内置,所以文本插入必然会出错。我们有以下插入文本的实现:
if (replaceRange.length > 0) {
[self.textView.textStorage replaceCharactersInRange:replaceRange withString:selectedWord];
[textView setSelectedRange:NSMakeRange(newLocation, 0)]; //Place cursor after inserted word
} else {
[self.textView insertText:selectedWord];
}
会返回类似的内容:
有。 。
虽然真实文本会是这样的:
有。这是一个小测试。测试一切。
答案 0 :(得分:0)
发现问题出现在insertText
,显然它会正确插入文本,但键盘上下文将无法读取插入的文本。现在修复只是使用replaceCharactersInRange
进行两次插入(意味着没有if / else子句):
[self.textView.textStorage replaceCharactersInRange:replaceRange withString:selectedWord];
[textView setSelectedRange:NSMakeRange(newLocation, 0)]; //Place cursor after inserted word
这解决了这个问题,并使我们得出结论,insertText不能按预期工作。请注意,如果要在文本字段中使用建议,这只会是一个问题。