在使用Objective-C的iOS中,我们可以使用UITableView
方法将scrollToRowAtIndexPath
滚动到特定的行索引,但在React-Native中我找不到这种滚动Listview
的方法在特定的行索引。
以下是该方案,
Listview
有这样的可扩展行,例如点按它时会展开,可扩展行包含TextInput
组件。TextInput
中输入文字时,键盘会显示出来,理想情况下,Listview
应该向上滚动(键盘下降Listview
时应向下滚动到它以前的位置)。使用Native-iOS可以很容易地实现这一点,但我陷入了React-Native。
我按照方式行事但未能实现
scrollTo(x:0,y:10,animated:true)
组件中有一个名为Listview
的方法(实际上是Scrollview
的方法),可以根据 y坐标向上/向下滚动1}}父视图的strong>。
我成功收到了键盘的Up& amp;在我的代码中关闭事件并根据我可以用键盘启动时scrollTo
方法(通过计算 y坐标)进行管理(如@ Alexey的回答中提到的那样)但是当键盘关闭时,我不知道如何计算 y坐标? (理想情况下,此时Listview应向下滚动到其先前的位置。)
任何帮助或提示都将不胜感激!
答案 0 :(得分:5)
row height * item index
怎么样?我们假设您要在ListView中滚动到第20个元素。每行都有height: 50
。我们使用上面提到的公式I计算第20个元素的偏移量:50 * 20 = 1000
。然后使用scrollTo(0, 1000)
,您将滚动到所需的元素。
为了能够向后滚动,您需要在应用scrollTo
函数之前存储偏移量:
var scrollProperties = this.refs.listView.scrollProperties;
var scrollOffset = scrollProperties.contentLength - scrollProperties.visibleLength;
在您点击键盘的事件(keyboardWillHide
上的DeviceEventEmitter
)后,您可以scrollTo
执行上一次偏移。