<Entry IsPassword="true" Placeholder="Password" TextColor="Green" BackgroundColor="#2c3e50" />
提前致谢.
解决方法
因此,会有几种选择.您可以先修改,如果您不想复制/粘贴,但可以摆脱其他所有内容,您可以在继承自EntryRenderer的自定义渲染器中使用UIMenuController.SharedMenuController.SetMenuVisible(false,false).如果你环顾四周,有类似的问题,这是一条可能的路线.
或者,您可以创建一个继承自ViewRenderer< TView,TNativeView>的“真实”自定义渲染器.作为ViewRenderer< Entry,YourNoCopyPasteUITextFieldClassName>.然后,继承自UITextField的类可以覆盖CanPerform,如下所示:
public override bool CanPerform(Selector action,NSObject withSender) { if(action.Name == "paste:" || action.Name == "copy:" || action.Name == "cut:") return false; return base.CanPerform(action,withSender); }
这将需要更多的努力,因为自定义渲染器将不具有与EntryRenderer相同的行为,但由于Xamarin.Forms现在是开源的,您可以查看它以了解EntryRenderer如何正常运行的一些想法.可能必须为Android做类似的事情.
编辑:对于Android,您可以使用此SO答案作为起点:How to disable copy/paste from/to EditText
另一个自定义渲染器,这次继承自ViewRenderer< Entry,EditText>,并在其中创建一个类(以最基本的形式):
class Callback : Java.Lang.Object,ActionMode.ICallback { public bool OnActionItemClicked(ActionMode mode,IMenuItem item) { return false; } public bool OnCreateActionMode(ActionMode mode,IMenu menu) { return false; } public void OnDestroyActionMode(ActionMode mode) { } public bool OnPrepareActionMode(ActionMode mode,IMenu menu) { return false; } }
然后,在OnElementChanged方法中,您可以设置本机控件和CustomSelectionActionModeCallback值:
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { base.OnElementChanged(e); if (Control != null) { Control.CustomSelectionActionModeCallback = new Callback(); } }
就工具栏而言,执行以下操作似乎会禁用自定义条目上的所有复制/粘贴/剪切功能.但是,您仍然可以长时间单击以显示粘贴按钮,除了将LongClickable设置为false之外,我已经戳了一下但还没有找到答案.如果我在这方面找到了其他任何东西,我一定要更新.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。