我需要知道当前聚焦输入的位置以进行一些计算。最后,我想打电话给.measure()
。
我得到了什么:
import { TextInput } from 'react-native';
const { State: TextInputState } = TextInput;
var currentlyFocussedField = TextInputState.currentlyFocusedField();
console.log('currentlyFocussedField', currentlyFocussedField);
但这仅返回文本字段的ID(如394
,下一个字段为395
)。如何访问真实元素/对象或如何在屏幕上显示其位置?
答案 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>
)
}
}