Xamarin.forms 推/弹出页面时,使用屏幕阅读器读取当前页面标题

Xamarin.forms 推/弹出页面时,使用屏幕阅读器读取当前页面标题,xamarin.forms,accessibility,navigationbar,Xamarin.forms,Accessibility,Navigationbar,我正在使用Xamarin.Forms为盲人或视力受损者开发一个应用程序。我有一个标题为X的NavigationPage,当应用程序启动对讲时,会读取标题X。我有4个页面,可以导航到标题为a、B、C和D的页面。我希望当浏览不同的页面时,屏幕阅读器能够阅读页面的标题。可能吗 例如,如果我在Android上打开talkback并浏览设置页面,talkback将读取所有页面标题。我想做类似的事情 推/弹出页面时,使用屏幕阅读器读取当前页面标题 您可以使用在每个平台上实现该功能,并在每个页面的OnAppe

我正在使用Xamarin.Forms为盲人或视力受损者开发一个应用程序。我有一个标题为X的
NavigationPage
,当应用程序启动对讲时,会读取标题X。我有4个页面,可以导航到标题为a、B、C和D的页面。我希望当浏览不同的页面时,屏幕阅读器能够阅读页面的标题。可能吗

例如,如果我在Android上打开talkback并浏览设置页面,talkback将读取所有页面标题。我想做类似的事情

推/弹出页面时,使用屏幕阅读器读取当前页面标题

您可以使用在每个平台上实现该功能,并在每个页面的OnAppearing方法中调用函数代码。

检查代码:

在共享项目中创建接口

public interface IAccessibilityManager
{
    void sendAccessibility(string speakText);
}
在所需的平台项目中实现接口

[assembly: Dependency(typeof(DroidAccessibilityImplement))]
namespace App19F_9.Droid
{
    public class DroidAccessibilityImplement : IAccessibilityManager
    {
        public void sendAccessibility(string speakContent)
        {
            AccessibilityManager manager = (AccessibilityManager)Android.App.Application.Context.GetSystemService(Context.AccessibilityService);
            if (manager.IsEnabled)
            {
                AccessibilityEvent _event = AccessibilityEvent.Obtain();
                _event.EventType = EventTypes.Announcement;
                _event.Text.Add(new Java.Lang.String(speakContent));
                manager.SendAccessibilityEvent(_event);
            }
        }
    }
}
从共享代码解析平台实现

public partial class Page5 : ContentPage
{
    ...
    protected override void OnAppearing()
    {
        base.OnAppearing();
        DependencyService.Get<IAccessibilityManager>().sendAccessibility(this.Title);
    }
}
公共部分类第5页:内容页
{
...
出现时受保护的覆盖无效()
{
base.OnAppearing();
DependencyService.Get().sendAccessibility(this.Title);
}
}