Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver
Posted
技术标签:
【中文标题】Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver【英文标题】:Xamarin Forms - How can I customize VoiceOver on TabbedView (iOS) 【发布时间】:2021-10-01 08:33:53 【问题描述】:我有一个简单的 TabbedView,底部有三个标签图标,在 ios 中显示得很好。
但是,我对它为有视力问题的人生成的 VoiceOver 文本并不满意。上面写着:
“标签栏页面 1 之一” “标签栏第 2 页,共三页” “标签栏第 3 页三之三”我想让它更友好,我想说:
“测试 1” “测试 2” “测试 3”我尝试使用标准的AutomationProperties.Name
属性来实现这一点,我在应用程序的其他任何地方都使用了它,但是对于 TabbedPage,它完全被忽略了:
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mypages="clr-namespace:radio;assembly=radio"
x:Class="radio.MainPage">
<NavigationPage Title="Page 1" IconImageSource="icon_1.png" AutomationProperties.Name="Test 1" >
<x:Arguments>
<mypages:PageArchive />
</x:Arguments>
</NavigationPage>
<mypages:PagePlayer Title="Page 2" IconImageSource="icon_2.png" AutomationProperties.Name="Test 2" />
<mypages:PageAboutXaml Title="Page 3" IconImageSource="icon_3.png" AutomationProperties.Name="Test 3"/>
</TabbedPage>
有什么想法可能是错的吗?
【问题讨论】:
我认为这没有错。这就是它的工作原理。根据Automation properties。某些元素的读取方式与其他元素不同,这也取决于用于此的软件:/ 对于所有其他实体,我能够自定义 VoiceOver 文本(使其对用户更友好)。在 TabbedPage 中,问题是当涉及到外语时,原来的内置文本没有意义,听起来像“Tab bed Page 2 One 正斜杠三” - 听起来真的很尴尬。我希望能够覆盖它。 【参考方案1】:尝试在 tabBarItem 上设置自定义accessibilityLabel
。
我们需要创建自定义渲染器来实现这一点。
[assembly: ExportRenderer(typeof(TabbedPage), typeof(MyRenderer))]
namespace FormsApp.iOS
public class MyRenderer : TabbedRenderer
public override void ViewWillLayoutSubviews()
base.ViewWillLayoutSubviews();
int index = 1;
foreach (var vc in ViewControllers)
vc.TabBarItem.AccessibilityLabel = "Test" + index.ToString();
index++;
请参阅https://***.com/a/26368487/8187800。
【讨论】:
感谢您的努力,我完全使用了上面的代码,但它仍然显示“TabBar Test1 of three”。如果我将“test”更改为“x x”,它确实反映了更改,所以我确信代码确实有效果,它只是不会删除选项卡项名称周围的文本。 您是否尝试启用isAccessibilityElement
一组accessibilityIdentifier
,如此链接中所述:***.com/a/49437988/8187800?
我尝试设置以下所有属性 AccessibilityLabel
、IsAccessibilityElement
、AccessibilityIdentifier
、AccessibilityValue
、AccessibilityTextualContext
- 但它无助于摆脱“Tab Tar” ' - 'Tab' - ... 选项卡名称周围的文本。
对不起,我尝试了所有方法但没有运气,也许你需要自定义一个标签布局来替换默认布局,我建议你在Apple Developer forum提出这个问题以获得更好的支持。
其实我建议你不要那样做。视力受损的人需要上下文,即他们在哪个选项卡上以及有多少个选项卡。这将帮助他们更轻松地导航。一般来说,最好使用设备默认设置来实现可访问性,因为视力受损的用户已经习惯了屏幕阅读器消息的格式和上下文。如果在您的示例中,选项卡仅表示“测试 1”,则使用将不知道它们有多少个选项卡,或者它们位于哪个选项卡编号。我还会确保您涉及视力受损的人,因为对您来说似乎“友好”的东西可能对他们来说似乎并不“友好”。以上是关于Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver的主要内容,如果未能解决你的问题,请参考以下文章