diff --git a/native/Avalonia.Native/src/OSX/automation.mm b/native/Avalonia.Native/src/OSX/automation.mm
index fccb53b7aa..30e1f5ea00 100644
--- a/native/Avalonia.Native/src/OSX/automation.mm
+++ b/native/Avalonia.Native/src/OSX/automation.mm
@@ -216,6 +216,22 @@
return [super accessibilityValue];
}
+- (void)setAccessibilityValue:(id)newValue
+{
+ if (_peer->IsValueProvider())
+ {
+ if (newValue == nil)
+ _peer->ValueProvider_SetValue(nil);
+ else if ([newValue isKindOfClass:[NSString class]])
+ _peer->ValueProvider_SetValue([(NSString*)newValue UTF8String]);
+ }
+ else if (_peer->IsRangeValueProvider())
+ {
+ if ([newValue isKindOfClass:[NSNumber class]])
+ _peer->RangeValueProvider_SetValue([(NSNumber*)newValue doubleValue]);
+ }
+}
+
- (id)accessibilityMinValue
{
if (_peer->IsRangeValueProvider())
diff --git a/src/Avalonia.Controls/Automation/Provider/IRangeValueProvider.cs b/src/Avalonia.Controls/Automation/Provider/IRangeValueProvider.cs
index 0cdeeb3065..1c3f6d5a8b 100644
--- a/src/Avalonia.Controls/Automation/Provider/IRangeValueProvider.cs
+++ b/src/Avalonia.Controls/Automation/Provider/IRangeValueProvider.cs
@@ -127,7 +127,7 @@
/// -
/// macOS
///
- /// NSAccessibilityProtocol.setAccessibilityValue (not implemented)
+ /// NSAccessibilityProtocol.setAccessibilityValue
///
///
///
diff --git a/src/Avalonia.Controls/Automation/Provider/IValueProvider.cs b/src/Avalonia.Controls/Automation/Provider/IValueProvider.cs
index 093327fa71..bd920fa4c4 100644
--- a/src/Avalonia.Controls/Automation/Provider/IValueProvider.cs
+++ b/src/Avalonia.Controls/Automation/Provider/IValueProvider.cs
@@ -57,7 +57,7 @@
/// -
/// macOS
///
- /// NSAccessibilityProtocol.setAccessibilityValue (not implemented)
+ /// NSAccessibilityProtocol.setAccessibilityValue
///
///
///
diff --git a/src/Avalonia.Native/avn.idl b/src/Avalonia.Native/avn.idl
index b80da03bd7..2fff3f3794 100644
--- a/src/Avalonia.Native/avn.idl
+++ b/src/Avalonia.Native/avn.idl
@@ -1317,7 +1317,7 @@ interface IAvnAutomationPeer : IUnknown
bool IsValueProvider();
IAvnString* ValueProvider_GetValue();
- void ValueProvider_SetValue(char* value);
+ void ValueProvider_SetValue([const] char* value);
IAvnString* GetHelpText();