Ios UITextView应更改Romaji键盘的TEXTINRange不正确

Ios UITextView应更改Romaji键盘的TEXTINRange不正确,ios,swift,keyboard,romaji,Ios,Swift,Keyboard,Romaji,因此,我注意到我的应用程序中存在一些错误,因为我试图使用UITextView的shouldChangeTextInRange委托来允许简单的事情,比如在线提及。但是,我注意到,对于任何多级键盘(如日语的Romaji键盘),代理在执行字符替换时不会被调用。我有一个简单的设置来演示: func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) ->

因此,我注意到我的应用程序中存在一些错误,因为我试图使用UITextView的
shouldChangeTextInRange
委托来允许简单的事情,比如在线提及。但是,我注意到,对于任何多级键盘(如日语的Romaji键盘),代理在执行字符替换时不会被调用。我有一个简单的设置来演示:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    print("length: \(range.length) start: \(range.location)")
    print(text)
    
    return true;
}
使用罗马键盘输入“ka”,文本框显示“ka”か', 但学员的指纹显示:

长度:0开始:0 k

长度:0开始:1 a

因此,textview在不调用委托的情况下替换了字符。这对我来说似乎是一个坏特性,因为它完全破坏了我的功能。以前有人碰到过这个吗?这在这个键盘上最为明显,但任何多级键盘都表现出相同的行为。我可以改用didChange委托,但它提供的信息要少得多,并且使该功能更难编程


我是否遗漏了什么,是否有什么技巧可以在代理中捕捉到这些编辑?

你解决了这个问题吗?我面临着同样的问题我在apple上发现了一个从未出现过的错误。最后,我不得不将两种键盘委托方法的信息结合起来,以使其工作,这非常混乱,而且在我以前的工作中,我无法提供更多的信息。对不起。