Skip to content

Commit b9f3249

Browse files
committed
fix: [3851] fix regression crash in ios text fields
1 parent 6c10e02 commit b9f3249

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

Ports/iOSPort/nativeSources/IOSNative.m

+19-11
Original file line numberDiff line numberDiff line change
@@ -7610,17 +7610,25 @@ void com_codename1_impl_ios_IOSNative_updateNativeEditorText___java_lang_String(
76107610
NSString* nsText = toNSString(CN1_THREAD_GET_STATE_PASS_ARG text);
76117611
NSString* currText = ((UITextView*)editingComponent).text;
76127612
if (![nsText isEqualToString:currText]) {
7613-
UITextView *textView = (UITextView *)editingComponent;
7614-
7615-
// Save current cursor position
7616-
NSRange selectedRange = textView.selectedRange;
7617-
7618-
// Update the text
7619-
textView.text = nsText;
7620-
7621-
// Restore the cursor position
7622-
NSUInteger newPosition = MIN(selectedRange.location, textView.text.length);
7623-
textView.selectedRange = NSMakeRange(newPosition, 0);
7613+
if ([editingComponent respondsToSelector:@selector(selectedRange)] &&
7614+
[editingComponent respondsToSelector:@selector(setSelectedRange:)]) {
7615+
UITextView *textView = (UITextView *)editingComponent;
7616+
7617+
// Save current cursor position
7618+
NSRange selectedRange = textView.selectedRange;
7619+
7620+
// Update the text
7621+
textView.text = nsText;
7622+
7623+
// Restore the cursor position
7624+
NSUInteger newPosition = MIN(selectedRange.location, textView.text.length);
7625+
textView.selectedRange = NSMakeRange(newPosition, 0);
7626+
} else if ([editingComponent respondsToSelector:@selector(setText:)]) {
7627+
// Fallback for UITextField, UILabel, or other classes supporting setText
7628+
[(id)editingComponent setText:nsText];
7629+
} else {
7630+
NSLog(@"editingComponent does not support text assignment");
7631+
}
76247632
}
76257633
}
76267634
POOL_END();

0 commit comments

Comments
 (0)