因此,最近我们的键盘扩展出现了问题,在相应的应用程序中显示了错误的建议。我们发现上下文返回的文本(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];
}会返回这样的东西:
那里。。。
而真正的文本应该是:
它就在那儿。那只是个小小的考验。对一切的考验。
发布于 2017-06-06 08:49:51
这个问题是与insertText一起发现的,显然它将正确地插入文本,但是键盘上下文将无法读取插入的文本。现在,修复方法只是对两个插入使用replaceCharactersInRange (意思是no / use子句):
[self.textView.textStorage replaceCharactersInRange:replaceRange withString:selectedWord];
[textView setSelectedRange:NSMakeRange(newLocation, 0)]; //Place cursor after inserted word这解决了这个问题,并使我们得出结论,insertText并不像预期的那样工作。请注意,只有在文本字段中使用建议时,这才是一个问题。
https://stackoverflow.com/questions/44385462
复制相似问题