@@ -411,6 +411,9 @@ - (BOOL)textView:(QMUITextView *)textView shouldChangeTextInRange:(NSRange)range
411411 // 如果是中文输入法正在输入拼音的过程中(markedTextRange 不为 nil),是不应该限制字数的(例如输入“huang”这5个字符,其实只是为了输入“黄”这一个字符)
412412 // 注意当点击了候选词后触发的那一次 textView:shouldChangeTextInRange:replacementText:,此时的 marktedTextRange 依然存在,尚未被清除,所以这种情况下的字符长度限制逻辑会交给 handleTextChanged: 那边处理。
413413 if (textView.markedTextRange ) {
414+ if ([textView.delegate respondsToSelector: @selector (textView:shouldChangeTextInRange:replacementText:originalValue: )]) {
415+ return [textView.delegate textView: textView shouldChangeTextInRange: range replacementText: text originalValue: YES ];
416+ }
414417 return YES ;
415418 }
416419
@@ -429,6 +432,9 @@ - (BOOL)textView:(QMUITextView *)textView shouldChangeTextInRange:(NSRange)range
429432
430433 if (!text.length && range.length > 0 ) {
431434 // 允许删除,这段必须放在上面 #377、#1170 的逻辑后面
435+ if ([textView.delegate respondsToSelector: @selector (textView:shouldChangeTextInRange:replacementText:originalValue: )]) {
436+ return [textView.delegate textView: textView shouldChangeTextInRange: range replacementText: text originalValue: YES ];
437+ }
432438 return YES ;
433439 }
434440
@@ -447,7 +453,7 @@ - (BOOL)textView:(QMUITextView *)textView shouldChangeTextInRange:(NSRange)range
447453 if ([textView lengthWithString: allowedText] <= substringLength) {
448454 BOOL shouldChange = YES ;
449455 if ([textView.delegate respondsToSelector: @selector (textView:shouldChangeTextInRange:replacementText:originalValue: )]) {
450- shouldChange = [textView.delegate textView: textView shouldChangeTextInRange: range replacementText: text originalValue: shouldChange ];
456+ shouldChange = [textView.delegate textView: textView shouldChangeTextInRange: range replacementText: text originalValue: YES ];
451457 }
452458 if (!shouldChange) {
453459 return NO ;
@@ -471,8 +477,7 @@ - (BOOL)textView:(QMUITextView *)textView shouldChangeTextInRange:(NSRange)range
471477 }
472478
473479 if ([textView.delegate respondsToSelector: @selector (textView:shouldChangeTextInRange:replacementText:originalValue: )]) {
474- BOOL delegateValue = [textView.delegate textView: textView shouldChangeTextInRange: range replacementText: text originalValue: YES ];
475- return delegateValue;
480+ return [textView.delegate textView: textView shouldChangeTextInRange: range replacementText: text originalValue: YES ];
476481 }
477482
478483 return YES ;
0 commit comments