【问题标题】:Xamarin Forms - How can I customize VoiceOver on TabbedView (iOS)Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver
【发布时间】: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 正斜杠三” - 听起来真的很尴尬。我希望能够覆盖它。

标签: ios xamarin.forms accessibility


【解决方案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://stackoverflow.com/a/26368487/8187800

【讨论】:

  • 感谢您的努力,我完全使用了上面的代码,但它仍然显示“TabBar Test1 of three”。如果我将“test”更改为“x x”,它确实反映了更改,所以我确信代码确实有效果,它只是不会删除选项卡项名称周围的文本。
  • 您是否尝试启用isAccessibilityElement 一组accessibilityIdentifier ,如此链接中所述:stackoverflow.com/a/49437988/8187800
  • 我尝试设置以下所有属性 AccessibilityLabelIsAccessibilityElementAccessibilityIdentifierAccessibilityValueAccessibilityTextualContext - 但它无助于摆脱“Tab Tar” ' - 'Tab' - ... 选项卡名称周围的文本。
  • 对不起,我尝试了所有方法但没有运气,也许你需要自定义一个标签布局来替换默认布局,我建议你在Apple Developer forum提出这个问题以获得更好的支持。
  • 其实我建议你不要那样做。视力受损的人需要上下文,即他们在哪个选项卡上以及有多少个选项卡。这将帮助他们更轻松地导航。一般来说,最好使用设备默认设置来实现可访问性,因为视力受损的用户已经习惯了屏幕阅读器消息的格式和上下文。如果在您的示例中,选项卡仅表示“测试 1”,则使用将不知道它们有多少个选项卡,或者它们位于哪个选项卡编号。我还会确保您涉及视力受损的人,因为对您来说似乎“友好”的东西可能对他们来说似乎并不“友好”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2021-06-28
  • 2020-01-31
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多