为什么UITextInput的InsertText会破坏键盘建议?

时间:2017-06-06 08:49:52

标签: ios keyboard uitextinput

因此,最近我们的键盘扩展程序出现问题,在随附的应用中显示错误的建议。我们发现从上下文(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];
    }

会返回类似的内容:

  

有。 。

虽然真实文本会是这样的:

  

有。这是一个小测试。测试一切。

1 个答案:

答案 0 :(得分:0)

发现问题出现在insertText,显然它会正确插入文本,但键盘上下文将无法读取插入的文本。现在修复只是使用replaceCharactersInRange进行两次插入(意味着没有if / else子句):

[self.textView.textStorage replaceCharactersInRange:replaceRange withString:selectedWord];
        [textView setSelectedRange:NSMakeRange(newLocation, 0)];  //Place cursor after inserted word

这解决了这个问题,并使我们得出结论,insertText不能按预期工作。请注意,如果要在文本字段中使用建议,这只会是一个问题。