5

I'm developing an app using React Native. There, I want to scroll into a View when I press a button. I've tried something like this.

render() {
  return(
    <View ref={field => this.myView = field} >
      //something inside the view
    </View>
  )
}

then, tried

this.myView.focus()

But, it doesn't work.

I want to get the result as shown in the following GIF demo. How to do this?

enter image description here

Sennen Randika
  • 1,566
  • 3
  • 14
  • 34

1 Answers1

20

You should store ScrollView ref and use scrollViewRef.scrollTo()

render() {
  return(
    <ScrollView ref={ref => this.scrollViewRef = ref}>
      <View 
        // you can store layout for each of the fields
        onLayout={event => this.layout = event.nativeEvent.layout}
      > 
        // some field goes here
      </View>
    </ScrollView>
  )
}

And then when an error occurs just scroll to your field this.scrollViewRef.scrollTo({ y: this.layout.y, animated: true });.

Update: a working example can be found in this repo.

Nazar Litvin
  • 758
  • 6
  • 10