如何在Nativescript中选择文本?

时间:2018-07-12 19:16:14

标签: nativescript

我希望用户可以选择一些文本,以便她可以复制和粘贴。如何在Android和iOS的Nativescript中选择Label元素中的文本?

2 个答案:

答案 0 :(得分:2)

TextView

如果您可以将其更改为TextView,则 iOS 会默认使用此行为。

  • 设置`editable =“ false”,以便用户无法编辑您的文本。并防止键盘出现。

  • iOS将应用白色背景。设置“ backgroundColor =“ transparent”即可停止此操作。

  • Android上,您需要设置args.object.nativeView.setTextIsSelectable(true) (即,从视图loaded事件开始)。即使您坚持使用Label,也需要这样做。

<TextView 
  editable="false"
  text="Your text goes here"
  backgroundColor="transparent"
  android:loaded="makeSelectable" />
exports.makeSelectable = args => args.object.nativeView.setTextIsSelectable(true);

标签

如果您想(或需要)坚持使用Label,我想您有两个选择;

  1. 如果您希望用户能够使用本机文本选择UI选择文本的一部分

    • 对于iOS,请查看UIMenuController
    • 对于Android,只需再setTextIsSelectable
  2. 如果仅希望用户能够将整个文本复制到剪贴板,请在您的longPress上附加一个Label事件。然后,通过使用本机API或Clipboard插件,抓取object.text并将其添加到剪贴板。我推荐插件。

    • iOS上,longPress事件将触发两次。因此,要确保您不会复制两次文本,可以选中args.ios.state。按下时将返回常数 1 ,结束时将返回 3

答案 1 :(得分:0)

过去我不得不做同样的事情,所以我想到了HTMLView。我唯一要做的就是对字体和其他内容使用内联样式:

<HtmlView html="<span style='font-size:16px;color:#8f8f8f;margin:3px 0;font-family: Open Sans;'>{{oVPC.data}}</span>" textWrap="true" class="data" (tap)="onOpenLinkInWebBrowser(oVPC.data)"></HtmlView>