如何允许用户从Xamarin.Forms标签复制和粘贴

Jha*_*118 12 xamarin xamarin.forms

如何允许用户从Xamarin.Forms标签中复制和粘贴?

单击任何平台上的文本,默认设置不允许突出显示,因此复制和粘贴.

任何帮助,将不胜感激.

I_K*_*age 8

您可以做的是将您的标签包装在手势识别器中:

<Label Text="Test">
    <Label.GestureRecognizers>
        <TapGestureRecognizer
            Tapped="YourFunctionToHandleMadTaps" 
            NumberOfTapsRequired="1" 
        />
   </Label.GestureRecognizers>
</Label>
Run Code Online (Sandbox Code Playgroud)

这将触发您的功能,在该功能中,您可以进入剪贴板并进行复制和粘贴.但是,我无法找到一种简单的方法来访问Xamarin.Forms中的剪贴板,因此您必须使用依赖服务.

Xamarin.Forms依赖关系服务文档

这是我如何进行剪贴板数据访问.请注意,在我的项目中,我只需要从剪贴板中删除数据,因此此代码只显示如何访问剪贴板数据:

  1. 在您的XF项目中创建一个接口,例如:

        public interface IClipBoard
        {
            String GetTextFromClipBoard();
        }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在移动项目中实现界面:

    Android:
        public string GetTextFromClipBoard ()
        {
            var clipboardmanager = (ClipboardManager)Forms.Context.GetSystemService (Context.ClipboardService);
            var item = clipboardmanager.PrimaryClip.GetItemAt(0);
            var text = item.Text;
            return text;
        }
    
    iOs:
        public string GetTextFromClipBoard ()
        {
            var pb = UIPasteboard.General.GetValue ("public.utf8-plain-text");
            return pb.ToString ();
        }
    
    Run Code Online (Sandbox Code Playgroud)

不要忘记在顶部添加汇编位:

    iOs: [assembly: Dependency (typeof (ClipBoard_iOs))]
    Android: [assembly: Dependency (typeof (ClipBoard_Droid))]
Run Code Online (Sandbox Code Playgroud)
  1. 从您的XF函数调用依赖服务

        public void YourFunctionToHandleMadTaps(Object sender, EventArgs ea)
        {
            var clipboardText = DependencyService.Get<IClipBoard> ().GetTextFromClipBoard ();
    
            YourFunctionToHandleMadTaps.Text = clipboardText;
        }
    
    Run Code Online (Sandbox Code Playgroud)