LoginSignup
6
3

More than 3 years have passed since last update.

react-nativeのIOSでテキストを部分選択する

Last updated at Posted at 2018-10-24

alt
react-nativeはクリップボードの取り扱いが悪い。
例えば、iosでは全文選択の機能はあるが、部分選択の機能はない。

<Text selectable>Foo<Text>

のように、Textをコピーペースト可能にする selectableプロパティはあるのだが...
以下のように全文コピーしか出来ない。
選択コピーが使いたい!!!
スクリーンショット 2018-10-22 16.01.46.png

そこで、TextInputを使う。
なぜなら、react nativeではTextは選択コピーに対応していないが、TextInputは選択コピーに対応しているのだ。

<TextInput
  style={styles.style}
  editable={false}
  multiline
  scrollEnabled={false}
  defaultValue={'コピー出来るぞ'}
/>

TextInputに、editable={false}(編集の禁止), multiline(改行を可能にする), を設定すると、Textのように扱える。
スクリーンショット 2018-10-22 16.00.50.png

ただし、注意点があり、textInputの高さが十分に与えられないと、スクロールしてしまう。
高さは余裕を持って設定しておこう。

どうしてもscrollが発生してしまう場合は、TextInputを囲むViewを取り除くと直ったり直らなかったりする。
scrollする原因がわからず、直せない箇所が一つあった。

結論

無理に範囲選択をreact nativeで実装するのはやめたほうがいいかもしれない。
どうしてもやりたかったら一応できるよ。

尚、androidでは、

<Text>Foo<Text>

でも選択コピーが出来た。

またWebViewコンポーネントを使うことでも選択コピーが出来る。
コード内にhtml文書として書いたものをWebviewで

あと良かったら弊社のreact native製アプリのクリンタル、ダウンロードしてみてください。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3