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

中文文档
2.0.1发布于 2021/12/10ISCTypeScriptCommonJS近 30 天下载 2.6万

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

中文使用文档
文档目录12 节
  1. 支持的版本
  2. 安装
  3. 使用量
  4. 自动滚动 TextInput 字段
  5. 程序滚动到任意 TextInput
  6. 程序滚动到任意位置
  7. 输入键盘事件
  8. Android 支持软件
  9. API 密码
  10. 道具
  11. 方法
  12. 使用高订单组件

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

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

Scroll demo

支持的版本

  • v2.0.0 需求 RN>=0.65.1
  • v1.0.0 需求 RN>=0.63.0

安装

安装可以通过 npm数字 :

npm i @codler/react-native-keyboard-aware-scroll-view --save

使用量

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

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

import { KeyboardAwareScrollView } from '@codler/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
}

版本与发布记录

@codler/react-native-keyboard-aware-scroll-view 共发布 4 个版本,首次发布于 2020/07/12;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.0.1latest2021/12/104 年前
2.0.02021/08/245 年前
1.0.12020/07/126 年前
1.0.02020/07/126 年前

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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