如何允许用户从 Xamarin.Forms 标签复制和粘贴?
在任何平台上单击文本,默认设置不允许突出显示,因此不允许复制和粘贴。
任何帮助,将不胜感激。
您可以做的是将标签包装在手势识别器中:
<Label Text="Test">
<Label.GestureRecognizers>
<TapGestureRecognizer
Tapped="YourFunctionToHandleMadTaps"
NumberOfTapsRequired="1"
/>
</Label.GestureRecognizers>
</Label>
这将触发您的函数,在该函数中您可以访问剪贴板并复制和粘贴。但是,我无法找到一种简单的方法来访问 Xamarin.Forms 中的剪贴板,因此您必须使用依赖项服务。
Xamarin.Forms 依赖项服务文档 http://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/
这是我访问剪贴板数据的方法。请注意,在我的项目中,我只需要从剪贴板获取数据,因此此代码仅向您展示如何访问剪贴板数据:
-
在您的 X.F 项目中创建一个接口,例如:
public interface IClipBoard
{
String GetTextFromClipBoard();
}
-
在您的移动项目中实现该界面:
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 ();
}
不要忘记在顶部添加汇编位:
iOs: [assembly: Dependency (typeof (ClipBoard_iOs))]
Android: [assembly: Dependency (typeof (ClipBoard_Droid))]
-
从 X.F 函数调用依赖服务
public void YourFunctionToHandleMadTaps(Object sender, EventArgs ea)
{
var clipboardText = DependencyService.Get<IClipBoard> ().GetTextFromClipBoard ();
YourFunctionToHandleMadTaps.Text = clipboardText;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)