ibireme / YYText

Powerful text framework for iOS to display and edit rich text.
MIT License
8.84k stars 1.68k forks source link

使用系统原生输入法联想输入时会多出一个错位的空格 #906

Open for-meng opened 4 years ago

for-meng commented 4 years ago

在使用YYTextView的时候 , 如果使用原生的系统英文输入法 , 输入一个字符然后点击联想的词 , 会导致添加完单词后 , 在之前输入的字符的后面多了一个空格 21wkm-1e75g

而使用第三方输入法(比如我用的百度输入法) 进行联想输入则会有光标位置问题 , 以及双光标问题 bd76a796-edc0-4114-92ee-1e4375e4dd2f

第一个问题 , 实际上是系统输入法点击联想的单词之后 , 会再插入一个空格 , 而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;
}

第二个问题也能用这个方法解决 , 但是在单词头部还是会有那个虚假的光标 , 虽然真正的光标是后面的那个 , 不影响输入🤔 , 然而这个不知道具体原因也没解决思路

HellojingQiu commented 4 years ago

691 可修复英文截断问题

weiVSwei commented 4 years ago

可修复英文截断问题