Open for-meng opened 4 years ago
在使用YYTextView的时候 , 如果使用原生的系统英文输入法 , 输入一个字符然后点击联想的词 , 会导致添加完单词后 , 在之前输入的字符的后面多了一个空格
而使用第三方输入法(比如我用的百度输入法) 进行联想输入则会有光标位置问题 , 以及双光标问题
第一个问题 , 实际上是系统输入法点击联想的单词之后 , 会再插入一个空格 , 而TextView的光标Range还没有更新导致。 目前我的解决方法是在shouldChangeTextInRange方法中 , 做光标Range的设置
- (BOOL)textView:(YYTextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ __block NSRange curRange = textView.selectedRange; dispatch_async(dispatch_get_main_queue(), ^{ curRange.location += (text.length - range.length); textView.selectedRange = curRange; }); return YES; }
第二个问题也能用这个方法解决 , 但是在单词头部还是会有那个虚假的光标 , 虽然真正的光标是后面的那个 , 不影响输入🤔 , 然而这个不知道具体原因也没解决思路
可修复英文截断问题
在使用YYTextView的时候 , 如果使用原生的系统英文输入法 , 输入一个字符然后点击联想的词 , 会导致添加完单词后 , 在之前输入的字符的后面多了一个空格![21wkm-1e75g](https://user-images.githubusercontent.com/16735123/66616952-7b5a0700-ec05-11e9-81a5-870cee4ce747.gif)
而使用第三方输入法(比如我用的百度输入法) 进行联想输入则会有光标位置问题 , 以及双光标问题![bd76a796-edc0-4114-92ee-1e4375e4dd2f](https://user-images.githubusercontent.com/16735123/66617371-6f6f4480-ec07-11e9-98d4-f8ef16488d27.gif)
第一个问题 , 实际上是系统输入法点击联想的单词之后 , 会再插入一个空格 , 而TextView的光标Range还没有更新导致。 目前我的解决方法是在shouldChangeTextInRange方法中 , 做光标Range的设置
第二个问题也能用这个方法解决 , 但是在单词头部还是会有那个虚假的光标 , 虽然真正的光标是后面的那个 , 不影响输入🤔 , 然而这个不知道具体原因也没解决思路