|
@@ -128,14 +128,48 @@
|
|
|
}
|
|
|
|
|
|
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
|
|
|
- // 输入控制
|
|
|
- NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];
|
|
|
- if (newString.length > 500) {
|
|
|
- return NO;
|
|
|
+ UITextRange *markedTextRange = textView.markedTextRange;
|
|
|
+ if (markedTextRange) {
|
|
|
+ // 当前处于拼音输入状态,暂不更新 attributedText
|
|
|
+ return YES;
|
|
|
+ }
|
|
|
+
|
|
|
+ NSString *newText = [[textView text] stringByReplacingCharactersInRange:range withString:text];
|
|
|
+ if (newText.length > 500) {
|
|
|
+ newText = [newText substringWithRange:NSMakeRange(0, 500)];
|
|
|
+ textView.text = newText;
|
|
|
}
|
|
|
return YES;
|
|
|
}
|
|
|
|
|
|
+- (void)updateTextViewLineHeight:(UITextView *)textView {
|
|
|
+ UITextRange *markedTextRange = textView.markedTextRange;
|
|
|
+ if (markedTextRange) {
|
|
|
+ // 当前处于拼音输入状态,暂不更新 attributedText
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ [UIView setAnimationsEnabled:YES];
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+- (void)textViewDidChange:(UITextView *)textView {
|
|
|
+ // 获取当前高亮的部分(如果正在拼音输入状态)
|
|
|
+ UITextRange *selectedRange = [textView markedTextRange];
|
|
|
+ UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];
|
|
|
+
|
|
|
+ // 如果没有高亮选择的文本,说明不是拼音输入状态
|
|
|
+ if (!position) {
|
|
|
+ // 获取当前textView的内容
|
|
|
+ NSString *currentText = textView.text;
|
|
|
+
|
|
|
+ // 如果文本超出最大长度,进行截取
|
|
|
+ if (currentText.length > 500) {
|
|
|
+ NSString *limitedText = [currentText substringToIndex:500];
|
|
|
+ textView.text = limitedText;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ [self updateTextViewLineHeight:textView];
|
|
|
+}
|
|
|
|
|
|
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
|
|
|
[self endEditing:YES];
|
|
@@ -147,8 +181,9 @@
|
|
|
}
|
|
|
|
|
|
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
|
|
|
- if ([string isEqualToString:@"\n"]) {
|
|
|
- [self endEditing:YES];
|
|
|
+ UITextRange *markedTextRange = textField.markedTextRange;
|
|
|
+ if (markedTextRange) {
|
|
|
+ // 当前处于拼音输入状态,暂不更新 attributedText
|
|
|
return YES;
|
|
|
}
|
|
|
// 输入控制
|
|
@@ -159,6 +194,32 @@
|
|
|
return YES;
|
|
|
}
|
|
|
|
|
|
+- (void)textFieldDidChangeSelection:(UITextField *)textField {
|
|
|
+ // 获取当前高亮的部分(如果正在拼音输入状态)
|
|
|
+ UITextRange *selectedRange = [textField markedTextRange];
|
|
|
+ UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
|
|
|
+ if (!position) {
|
|
|
+ // 获取当前textView的内容
|
|
|
+ NSString *currentText = textField.text;
|
|
|
+
|
|
|
+ // 如果文本超出最大长度,进行截取
|
|
|
+ if (currentText.length > 50) {
|
|
|
+ NSString *limitedText = [currentText substringToIndex:50];
|
|
|
+ textField.text = limitedText;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ [self updateTextFieldLineHeight:textField];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)updateTextFieldLineHeight:(UITextField *)textField {
|
|
|
+ UITextRange *markedTextRange = textField.markedTextRange;
|
|
|
+ if (markedTextRange) {
|
|
|
+ // 当前处于拼音输入状态,暂不更新 attributedText
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ [UIView setAnimationsEnabled:YES];
|
|
|
+}
|
|
|
+
|
|
|
- (UIScrollView *)scrollView {
|
|
|
if (!_scrollView) {
|
|
|
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
|