如何获得当前焦点输入的位置?

时间:2016-08-24 15:24:22

标签: react-native

我需要知道当前聚焦输入的位置以进行一些计算。最后,我想打电话给.measure()

我得到了什么:

import { TextInput } from 'react-native';

const { State: TextInputState } = TextInput;
var currentlyFocussedField      = TextInputState.currentlyFocusedField();

console.log('currentlyFocussedField', currentlyFocussedField);

但这仅返回文本字段的ID(如394,下一个字段为395)。如何访问真实元素/对象或如何在屏幕上显示其位置?

2 个答案:

答案 0 :(得分:6)

我不知道如何从javascript中的数字Unhandled exception in callback android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.MAIN flg=0x10000000 pkg=com.google.android.apps.maps } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1514) at android.app.ContextImpl.startActivity(ContextImpl.java:663) at android.app.ContextImpl.startActivity(ContextImpl.java:645) at android.content.ContextWrapper.startActivity(ContextWrapper.java:331) 访问React组件,但您可以使用RN在内部使用的reactTag函数来使UIManager.measure(reactTag, callback)工作

没有记录,但您可以找到适用于iOS的来源here和适用于Android的here

您可以使用它来获取本机视图的所有大小值。例如,从上面的示例中提取:

.measure()

答案 1 :(得分:0)

这就是我如何获得焦点输入的位置以滚动它:

import { findNodeHandle, ScrollView, TextInput, UIManager } from 'react-native'

class SomeForm extends Component {
  scrollTo (element) {
    const handle = findNodeHandle(this[element])
    if (handle) {
      UIManager.measure(handle, (x, y) => {
        this._scrollView.scrollTo({
          animated: true,
          y
        })
      })
    }
  }

  render () {
    return (
      <ScrollView
        ref={(element) => {
          this._scrollView = element
        }}
      >
        <TextInput
          onFocus={() => this.scrollTo('_inputName')}
          ref={(element) => {
            this._inputName = element
          }}
        />
      </ScrollView>
    )
  }
}