当 push/pop 一个页面时,用屏幕 reader 读取当前页面标题
Read current page title with screen reader when push/pop a page
我正在使用 Xamarin.Forms 为盲人或视障人士开发应用程序。我有一个带有标题 X 的 NavigationPage
,当应用程序开始对讲时读取标题 X。我有 4 个页面可以导航到 A、B、C 和 D 标题。我希望在浏览不同的页面时,屏幕 reader 会读取页面的标题。可能吗?
例如,如果我在 Android 上打开对讲并浏览设置页面,对讲会读取所有页面标题。我想做类似的事情。
Read current page title with screen reader when push/pop a page
您可以使用DependencyService实现各个平台的功能,在各个页面的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);
}
}
我正在使用 Xamarin.Forms 为盲人或视障人士开发应用程序。我有一个带有标题 X 的 NavigationPage
,当应用程序开始对讲时读取标题 X。我有 4 个页面可以导航到 A、B、C 和 D 标题。我希望在浏览不同的页面时,屏幕 reader 会读取页面的标题。可能吗?
例如,如果我在 Android 上打开对讲并浏览设置页面,对讲会读取所有页面标题。我想做类似的事情。
Read current page title with screen reader when push/pop a page
您可以使用DependencyService实现各个平台的功能,在各个页面的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);
}
}