我已经在我的 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 自己的编辑器而不是自定义渲染器,它也不起作用。文本仍然无法选择。