Я реализовал редактор без полей в своем приложении Xamarin.Forms, используя Custom EditorRenderer. Но я столкнулся с проблемой, что текст редактора вообще нельзя выбрать в обоих случаях, ни в элементе управления редактором форм, ни в элементе управления собственного редактора 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;
}
}
}
Даже если я использую собственный редактор Xamarin.Forms в Xaml вместо пользовательского средства визуализации, он также не работает вообще. Текст по-прежнему нельзя выделить.
IsReadOnly
истинно, мы не сможем вставить значение в редактор. - person Lucas Zhang   schedule 08.04.2020