Невозможно выделить текст в элементе управления Xamarin.Forms Editor или в пользовательском редакторе Borderless, используя средство визуализации - PullRequest
0 голосов
/ 08 апреля 2020

Я реализовал Borderless Editor в своем приложении Xamarin.Forms, используя Custom EditorRenderer. Но я сталкиваюсь с проблемой, что текст редактора вообще не может быть выделен ни в обоих случаях, ни в элементе управления редактора форм, ни в визуализированном элементе управления редактора. Мое приложение имеет функцию, позволяющую копировать текст и вставлять текст в редакторе во время набора текста, как в любом другом приложении для редактирования текста. Это базовая функция c в большинстве приложений, и она есть по умолчанию. Но это не работает в моем приложении. Я попытался включить его через

Control.SetTextIsSelectable (true);

, но все равно он не работает. Я пробовал и другие вещи, такие как:

Control.CustomSelectionActionModeCallback = new CustomSelectionActionModeCallback (); Control.CustomInsertionActionModeCallback = new CustomInsertionActionModeCallback ();

Но ничего не работает вообще, и текст не выделяется даже одним словом. У кого-нибудь есть идеи по этому поводу? Как я могу сделать текст выбираемым и разрешить функцию вставки копии по умолчанию в настраиваемом редакторе?

Вот мой код в Xaml:

 <renderer:BorderlessEditor
                                        Grid.Row="1"
                                        x:Name="UserTextEditorAndroid"
                                        BackgroundColor="{StaticResource WhiteColor}"
                                        HeightRequest="350"
                                        Margin="20,2"
                                        MaxLength="1024"
                                        IsReadOnly="{Binding Source={x:Reference LongTextTemplate}, Path=Editable, Converter={StaticResource InverseBool}}" />

А пользовательский код визуализации:

public class BorderlessEditorRenderer : EditorRenderer
{
    public BorderlessEditorRenderer()
    {
    }

    public static void Init() { }
    protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement == null)
        {
            Control.Background = null;

            var layoutParams = new MarginLayoutParams(Control.LayoutParameters);
            layoutParams.SetMargins(0, 0, 0, 0);
            LayoutParameters = layoutParams;
            Control.LayoutParameters = layoutParams;
            Control.SetPadding(0, 0, 0, 0);
            SetPadding(0, 0, 0, 0);
            Control.SetTextIsSelectable(true);
            Control.VerticalScrollBarEnabled = false;
        }
    }
}

Даже если я использую собственный редактор Xamarin.Forms в Xaml вместо пользовательского рендерера, он также не работает вообще. Текст по-прежнему недоступен для выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...