@exodus/react-native-keyboard-aware-scroll-view

中文文档
0.9.5-exodus.0发布于 2022/05/23MITTypeScriptCommonJS近 30 天下载 1万

一个在键盘出现时修改大小的回放原生 ScrollView 组件 .

中文使用文档
文档目录15 节
  1. @exodus/ react-native-键盘-意识-滚动-视图
  2. 支持的版本
  3. 安装
  4. 使用量
  5. 自动滚动 TextInput 字段
  6. 程序滚动到任意 TextInput
  7. 程序滚动到任意位置
  8. 输入键盘事件
  9. Android 支持软件
  10. API 密码
  11. 道具
  12. 方法
  13. 使用高订单组件
  14. 许可证
  15. 作者

@exodus/ react-native-键盘-意识-滚动-视图

键盘意识滚动视图, 并修正滚动位置错误

反应-内生-键盘-意识-滚动-视图

处理键盘外观并自动滚动到焦点的 ScrollView 组件 TextInput。 。 。 .

Scroll demo

支持的版本

  • v0.4.0 需求 RN>=0.48
  • v0.2.0 需求 RN>=0.32.0。 。 。 .
  • v0.1.2 需求 RN>=0.27.2 但你应该用 0.2.0 使其与多卷轴视图相通.
  • v0.0.7 需求 react-native>=0.25.0。 。 。 .
  • 使用 v0.0.6 对于更古老的RN版本.

安装

安装可以通过 npm 或者说 yarn数字 :

npm i react-native-keyboard-aware-scroll-view --save
yarn add react-native-keyboard-aware-scroll-view

使用量

你可以用这个 KeyboardAwareScrollView, (中文(简体) ), KeyboardAwareSectionList 或 KeyboardAwareFlatList 组件。 他们接受 ScrollView, (中文(简体) ), SectionList 财务报告和审定财务报表 FlatList 默认道具和 执行自定义高顺序组件 KeyboardAwareHOC 用于处理键盘外观. 高顺序组件也可以使用,如果您想将其用于其他组件.

导入 react-native-keyboard-aware-scroll-view 将内容包入其中 内容:

import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'
<KeyboardAwareScrollView>
  <View>
    <TextInput />
  </View>
</KeyboardAwareScrollView>

自动滚动 TextInput 字段

截止 v0.1.0,组件自动滚动到焦点 TextInput 😎. 对于版本 v0.0.7 更年长的,你可以做以下.

程序滚动到任意 TextInput

滚动到任意 TextInput 字段,您可以使用内置方法 scrollToFocusedInput示例:

_scrollToInput (reactNode: any) {
  // Add a 'scroll' ref to your ScrollView
  this.scroll.props.scrollToFocusedInput(reactNode)
}
<KeyboardAwareScrollView
  innerRef={ref => {
    this.scroll = ref
  }}>
  <View>
    <TextInput
      onFocus={(event: Event) => {
        // `bind` the function if you're using ES6 classes
        this._scrollToInput(ReactNative.findNodeHandle(event.target))
      }}
    />
  </View>
</KeyboardAwareScrollView>

程序滚动到任意位置

还有一个内置的功能,允许您按程序滚动到滚动视图的任何位置:

this.scroll.props.scrollToPosition(0, 0)

输入键盘事件

您可以注册到 ScrollViewResponder 事件 onKeyboardWillShow 财务报告和审定财务报表 onKeyboardWillHide数字 :

<KeyboardAwareScrollView
  onKeyboardWillShow={(frames: Object) => {
    console.log('Keyboard event', frames)
  }}>
  <View>
    <TextInput />
  </View>
</KeyboardAwareScrollView>

Android 支持软件

首先,Android本土有这个功能,你可以很容易地通过设置来启用它 windowSoftInputMode 内 AndroidManifest.xml检查 这里。 。 。 .

但如果你想使用像 extraHeight,您需要启用Android支持,其步骤如下:

  • 确定您使用反应本地化 0.46 或以上(或以上(一).
  • 设定 windowSoftInputMode 改为 adjustPan 内 AndroidManifest.xml。 。 。 .
  • 设定 enableOnAndroid 属性改为 true。 。 。 .

Android 支持不完美, 这里有所支持的列表 :

PropAndroid 支持软件
viewIsInsideTabBar对
resetScrollToCoords对
enableAutomaticScroll对
extraHeight对
extraScrollHeight对
enableResetScrollToCoords对
keyboardOpeningTime没有

API 密码

道具

所有的东西 ScrollView编号 :FlatList 道具会通过.

Prop类型说明
innerRefFunction获取组件的参考文献.
viewIsInsideTabBarboolean添加一个代表 TabBarIOS 高点.
resetScrollToCoordsObject: {x: number, y: number}坐标,用于键盘隐藏时重置卷轴.
enableAutomaticScrollboolean当焦点在 TextInput 将滚动位置,默认启用.
extraHeightnumber聚焦时添加额外偏移 TextInput编号.
extraScrollHeightnumber在键盘上添加额外偏移。 如果你想将元素粘在键盘上方,则有用.
enableResetScrollToCoordsboolean让用户启用或禁用自动重置ScrollToCoords.
keyboardOpeningTimenumber设置滚动到新位置前的延迟时间, 默认为 250
enableOnAndroidboolean启用 Android 支持

方法

使用 innerRef 以获取组件引用和使用 this.scrollRef.props 获得这些方法.

方法参数说明
getScrollRespondervoid获取 ScrollResponder
scrollToPositionx: number, y: number, animated: bool = true滚动到有动画或没有动画的特定位置.
scrollToEndanimated?: bool = true卷起以动画或无动画结尾.
scrollIntoViewelement: React.Element<*>, options: { getScrollPosition: ?(parentLayout, childLayout, contentOffset) => { x: number, y: number, animated: boolean } }将键盘中的元素滚动到视图中.

使用高订单组件

使任何组件都具有键盘意识是非常容易的. 看看密码 KeyboardAwareFlatList数字 :

/* @flow */

import { FlatList } from 'react-native'
import listenToKeyboardEvents from './KeyboardAwareHOC'

export default listenToKeyboardEvents(FlatList)

也可以配置HOC. 有时提供静态配置比用道具配置行为更方便. 此 HOC 配置可以被道具所覆盖 .

/* @flow */

import { FlatList } from 'react-native'
import listenToKeyboardEvents from './KeyboardAwareHOC'

const config = {
  enableOnAndroid: true,
  enableAutomaticScroll: true
}

export default listenToKeyboardEvents(config)(FlatList)

可用的配置选项有:

{
  enableOnAndroid: boolean,
  contentContainerStyle: ?Object,
  enableAutomaticScroll: boolean,
  extraHeight: number,
  extraScrollHeight: number,
  enableResetScrollToCoords: boolean,
  keyboardOpeningTime: number,
  viewIsInsideTabBar: boolean,
  refPropName: string,
  extractNativeRef: Function
}

许可证

麻省理工学院.

作者

阿尔瓦罗·梅迪纳·巴列斯特 <amedina at apsl.net>

由 QQ 创建 APSL 软件。 。 。 .

版本与发布记录

@exodus/react-native-keyboard-aware-scroll-view 共发布 3 个版本,首次发布于 2021/12/10;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.9.5-exodus.0latest2022/05/234 年前
0.9.3-exodus.12021/12/144 年前
0.9.1-exodus.12021/12/104 年前

关于 @exodus/react-native-keyboard-aware-scroll-view 的常见问题

@exodus/react-native-keyboard-aware-scroll-view 是什么?

一个在键盘出现时修改大小的回放原生 ScrollView 组件 .

如何安装 @exodus/react-native-keyboard-aware-scroll-view?

在项目目录运行 npm install @exodus/react-native-keyboard-aware-scroll-view,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react-native(>=0.48.4)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@exodus/react-native-keyboard-aware-scroll-view 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@exodus/react-native-keyboard-aware-scroll-view 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@exodus/react-native-keyboard-aware-scroll-view 可以商用吗?

@exodus/react-native-keyboard-aware-scroll-view 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@exodus/react-native-keyboard-aware-scroll-view 的下载量有多少?

根据 npm 官方下载统计,@exodus/react-native-keyboard-aware-scroll-view 在 2026/10/14 – 2026/11/12 这 30 天内被下载 10,403 次,日均约 347 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@exodus/react-native-keyboard-aware-scroll-view 还在维护吗?

最新版本 0.9.5-exodus.0 发布于 2022/05/23(4 年前);至今共发布 3 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/12/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。