3

Objective-C を使用する iOS では、メソッドUITableViewを使用して特定の行インデックスまでスクロールできますscrollToRowAtIndexPathが、React-Native では、特定の行インデックスでスクロールする方法が見つかりませんでしたListview

以下はシナリオです。

  1. Listviewタップしながら展開するような展開可能な行があり、展開可能な行にはコンポーネントが含まれていますTextInput
  2. でテキストを入力している間TextInput、キーボードは上に表示され、理想的にはその瞬間Listviewに上にスクロールする必要があります (キーボードが下がっListviewたら、前の位置に下にスクロールする必要があります)。

これは Native-iOS で簡単に実現できますが、私は React-Native で立ち往生しています。

ここに画像の説明を入力


私は次の方法を試しましたが、うまくいきませんでした

親ビューのy 座標に基づいて上下にスクロールできるコンポーネント (実際にscrollTo(x:0,y:10,animated:true)はのメソッド) で呼び出されるメソッドがあります。ListviewScrollview

コードでキーボードの Up & Down イベントを正常に受信し、それに基づいて、キーボードが起動したときに ( y 座標scrollToを計算することにより) メソッドで何とか管理できます(@Alexey の回答で述べたように) が、yを計算する方法についてはわかりません。キーボードが下がったときの座標は?(理想的には、この時点で Listview は前の位置までスクロールする必要があります)。

ヘルプやヒントをいただければ幸いです。

4

1 に答える 1

5

どうrow height * item indexですか?ListView で 20 番目の要素までスクロールするとします。各行にはheight: 50. 上記の式を使用して、20 番目の要素のオフセットを計算します50 * 20 = 1000。次に、 を使用scrollTo(0, 1000)して、目的の要素までスクロールします。

スクロールバックできるようにするには、scrollTo関数 を適用する前にオフセットを保存する必要があります。

var scrollProperties = this.refs.listView.scrollProperties;
var scrollOffset = scrollProperties.contentLength - scrollProperties.visibleLength;

keyboardWillHide(から)キーボードのイベントに接続した後、前のオフセットをDeviceEventEmitter実行できます。scrollTo

于 2016-03-17T09:47:23.013 に答える