我正在尝试使用React Native
在Android上捕获键盘显示/隐藏事件上的事件。我被困在了一个死胡同里。
以下是我的清单设置:
<activity
android:launchMode="singleTop"
android:name=".MainActivity"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
</intent-filter>
</activity>
字符串
下面是我的RN组件:
import React, {Component} from 'react';
import {
View,Keyboard
} from 'react-native';
export default class KeyboardAwareComponent extends Component {
componentDidMount() {
Keyboard.addListener("keyboardDidShow",()=>{
console.log("Show event");
})
}
render() {
return <View />
}
}
型
非常感谢提前:)
3条答案
按热度按时间kh212irz1#
这里有一些事件直接从文档。
键盘将显示
键盘显示
键盘将隐藏
键盘隐藏
键盘将更改帧
键盘DidChangeframe
字符串
daolsyd02#
TL/DR:
确保您使用的视图不是由
ScrollView
包围的我发现
Keyboard
事件要工作,必须在Android上计算屏幕的正确可见部分,当视图使用ScrollView时,这并不好用。bxpogfeg3#
对我来说,问题是我使用的是
FLAG_LAYOUT_NO_LIMITS
,它不能与adjustPan
或adjustResize
一起工作在
MainActivity
里面我替换了这个字符串
用这个:
型
类似的行为。
以下是与问题/解决方案相关的几个链接:
adjustPan not working with FLAG_LAYOUT_NO_LIMITS的数据。
https://github.com/th3rdwave/react-native-safe-area-context/issues/8的
https://unicorn-utterances.com/posts/draw-under-navbar-using-react-native/的