Xamarin 窗体依赖项服务:单击按钮后更改辅助功能焦点



我想要的是能够在单击按钮后将辅助功能焦点设置为特定元素。我试图使用依赖服务来实现这一点,但它不起作用,我认为由于我尝试将 Forms.View 转换为 Android.View,但我不确定这是否是问题所在,也许我做错了其他事情。你知道如何使用依赖服务或其他任何东西来做到这一点吗?

我尝试过什么(目前仅在Android上(:

主页:

public partial class MainPage : ContentPage
{
Button b1;
Button b2;
IAccessibilityFocusService service;
public MainPage()
{
InitializeComponent();
service = DependencyService.Get<IAccessibilityFocusService(DependencyFetchTarget.NewInstance);
b1 = new Button
{
Text = "BUTTON 1",
BackgroundColor = Color.Blue,
};
b2 = new Button
{
Text = "BUTTON 2",
};
stacklayout.Children.Add(b1);
stacklayout.Children.Add(b2);
b1.Clicked += Mybutton_Clicked;
}
private async void Mybutton_Clicked(object sender, EventArgs e)
{
Console.WriteLine("PIPPO clicked");
service.ChangeAccessibilityFocus(b2);
}
}

IAccessibilityFocusService:

public interface IAccessibilityFocusService { void ChangeAccessibilityFocus(View v);
}

AndroidAccessibilityFocus:

[assembly: Dependency(typeof(CustomViewAccessibility.Droid.AccessibilityFocus))]
public class AndroidAccessibilityFocus : IAccessibilityFocusService
{
public void ChangeAccessibilityFocus(View v)
{
//first I convert the Forms.Veiw to the native android view, so that I can invoke sendAccessibilityEvent on that view.
Platform.CreateRendererWithContext(v, Android.App.Application.Context).View.SendAccessibilityEvent(EventTypes.ViewFocused); 
}
}

您需要先注册服务,然后才能解析它。

using Xamarin.Forms;
[assembly: Dependency(typeof(AndroidAccessibilityFocus ))]
namespace DependencyServiceDemos.iOS
{
public class AndroidAccessibilityFocus : IAccessibilityFocusService
{
public void ChangeAccessibilityFocus(View v)
{
...
}
}
}

注册工作正在与[assembly: Dependency(typeof(AndroidAccessibilityFocus ))]一起完成。

有关更多详细信息,请参阅 Microsoft 的文档。

最新更新