diff --git a/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.m b/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.m index a5c773ee6f..7848ebf7c4 100644 --- a/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.m +++ b/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.m @@ -4018,6 +4018,7 @@ - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)co + - (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller { } diff --git a/Ports/iOSPort/nativeSources/IOSNative.m b/Ports/iOSPort/nativeSources/IOSNative.m index f590019be6..e88628985c 100644 --- a/Ports/iOSPort/nativeSources/IOSNative.m +++ b/Ports/iOSPort/nativeSources/IOSNative.m @@ -10315,3 +10315,13 @@ JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_isRTLString___java_lang_String_R_b POOL_END(); return NO; } + +void com_codename1_impl_ios_IOSNative_announceForAccessibility___java_lang_String(CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT text) { + if (text == JAVA_NULL) { + return; + } + POOL_BEGIN(); + NSString *nsText = toNSString(CN1_THREAD_STATE_PASS_ARG text); + UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, nsText); + POOL_END(); +} diff --git a/Ports/iOSPort/src/com/codename1/impl/ios/IOSImplementation.java b/Ports/iOSPort/src/com/codename1/impl/ios/IOSImplementation.java index a20f5180ae..5b9bf946b1 100644 --- a/Ports/iOSPort/src/com/codename1/impl/ios/IOSImplementation.java +++ b/Ports/iOSPort/src/com/codename1/impl/ios/IOSImplementation.java @@ -9494,6 +9494,11 @@ public boolean isJailbrokenDevice() { Boolean b = canExecute("cydia://package/com.example.package"); return b != null && b.booleanValue(); } + + @Override + public void announceForAccessibility(final Component cmp, final String text) { + IOSNative.announceForAccessibility(text); + } } diff --git a/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java b/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java index df566f6f2e..92f6f480b8 100644 --- a/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java +++ b/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java @@ -721,5 +721,7 @@ native void nativeSetTransformMutable( native int getDisplaySafeInsetBottom(); native boolean isRTLString(String javaString); + + public static native void announceForAccessibility(String text); } \ No newline at end of file diff --git a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/Cn1ssDeviceRunner.java b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/Cn1ssDeviceRunner.java index 8f1f533fa4..04662afa31 100644 --- a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/Cn1ssDeviceRunner.java +++ b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/Cn1ssDeviceRunner.java @@ -32,6 +32,7 @@ import com.codenameone.examples.hellocodenameone.tests.graphics.TransformPerspective; import com.codenameone.examples.hellocodenameone.tests.graphics.TransformRotation; import com.codenameone.examples.hellocodenameone.tests.graphics.TransformTranslation; +import com.codenameone.examples.hellocodenameone.tests.accessibility.AccessibilityTest; public final class Cn1ssDeviceRunner extends DeviceRunner { private static final BaseTest[] TEST_CLASSES = new BaseTest[] { @@ -63,7 +64,8 @@ public final class Cn1ssDeviceRunner extends DeviceRunner { new TransformCamera(), new BrowserComponentScreenshotTest(), new MediaPlaybackScreenshotTest(), - new InPlaceEditViewTest() + new InPlaceEditViewTest(), + new AccessibilityTest() }; public void runSuite() { diff --git a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/accessibility/AccessibilityTest.java b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/accessibility/AccessibilityTest.java new file mode 100644 index 0000000000..3494bf9f11 --- /dev/null +++ b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/accessibility/AccessibilityTest.java @@ -0,0 +1,22 @@ +package com.codenameone.examples.hellocodenameone.tests.accessibility; + +import com.codename1.ui.Display; +import com.codenameone.examples.hellocodenameone.tests.BaseTest; + +public class AccessibilityTest extends BaseTest { + @Override + public boolean runTest() throws Exception { + com.codename1.ui.CN.callSerially(() -> { + String expected = "Testing accessibility announcement"; + // Just verify that invoking this doesn't crash the app + Display.getInstance().announceForAccessibility(expected); + done(); + }); + return true; + } + + @Override + public boolean shouldTakeScreenshot() { + return false; + } +}