То, что я хочу, - это возможность установить фокус доступности для определенного элемента после нажатия кнопки. Я пытался добиться этого с помощью службы зависимостей, но она не работает, я думаю, из-за того, что я пытаюсь преобразовать Forms.View в Android .View, но я не уверен, если это проблема, возможно я делаю что-то еще не так. Вы знаете, как это сделать, используя службу зависимостей или что-то еще?
То, что я пробовал, (на данный момент только на Android):
MainPage:
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);<br>
}
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);
}
}