Skip to content

Commit ed8b2de

Browse files
shannahSteve Hannah
and
Steve Hannah
authored
fix: [3851] fix regression crash in ios text fields (#3878)
* fix: [3851] fix regression crash in ios text fields * updated cache to v4 in workflow --------- Co-authored-by: Steve Hannah <[email protected]>
1 parent 6c10e02 commit ed8b2de

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

.github/workflows/pr.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
java-version: 1.8
2222
java-package: jdk+fx
2323
- name: Cache Maven dependencies
24-
uses: actions/cache@v2
24+
uses: actions/cache@v4
2525
with:
2626
path: ~/.m2
2727
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}

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)