我想做一个功能,就像其他社交媒体应用程序一样,用户可以在帖子中添加文本,并将文本拖动到他们想要的任何地方。我有一个编辑器的代码,它允许用户输入任何他们想要的,它显示在屏幕上,当用户单击一个按钮。键入明智的,它的工作非常好,但现在我想实现一个功能,用户可以拖动文本到任何他们想要的地方,因为作为默认,我设置为显示在屏幕中间的文本。我尝试使用PanGestureRecognizer
,但不确定这是否是正确的方法,或者是否有更好的方法。有没有一种方法,一旦用户完成使用Editor
的输入,他们就可以把它拖到任何他们想要的地方?这是编辑器的代码。
<Editor IsVisible="{Binding HasTextBox}" Text="{Binding EntryText}" HorizontalOptions="Center" VerticalOptions="Center">
<Editor.GestureRecognizers>
<PanGestureRecognizer PanUpdated="OnPanUpdated" />
</Editor.GestureRecognizers>
</Editor>
这是我的PanUpdated
方法的代码,它不起作用。
double x, y;
private void OnPanUpdated(object sender, PanUpdatedEventArgs e)
{
var editor = sender as Editor;
switch (e.StatusType)
{
case GestureStatus.Started:
// Store the current position
x = editor.TranslationX;
y = editor.TranslationY;
break;
case GestureStatus.Running:
// Adjust the position based on the user's movement
editor.TranslationX = x + e.TotalX;
editor.TranslationY = y + e.TotalY;
break;
case GestureStatus.Completed:
// Optionally store the final position
x = editor.TranslationX;
y = editor.TranslationY;
break;
}
}
1条答案
按热度按时间w8f9ii691#
是的,您可以将
PanGestureRecognizer
用于此用例。要实现可拖动的编辑器/按钮/任何控件,您可以使用PanGestureRecognizer和操纵该控件的位置的组合。您需要从
ContentView
类创建自定义控件,如:你可以在xaml中使用它,比如:
您可以根据您的要求设置UI组件,如设置背景颜色等。