无法使用渲染器在 Xamarin.Forms 编辑器控件或自定义无边框编辑器中选择文本

问题描述 投票:0回答:0

我已经在我的 Xamarin.Forms 应用程序中使用自定义

BorderlessEditor
实现了
EditorRenderer
,但我面临的问题是,在这两种情况下,编辑器文本根本无法选择,无论是在 Forms 编辑器控件中还是在 Rendered 中本机编辑器控件。我的应用程序具有让用户在输入时复制粘贴文本到编辑器中的功能,就像在任何其他文本编辑应用程序中一样。这是大多数应用程序的基本功能,默认情况下存在。但它在我的应用程序中不起作用。我试过启用它

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;
        }
    }
}

即使我在 XAML 中使用 Xamarin.Forms 自己的编辑器而不是自定义渲染器,它也不起作用。文本仍然无法选择。

xamarin.forms custom-controls text-editor textselection
© www.soinside.com 2019 - 2024. All rights reserved.