我正在开发一个 react-native 应用程序,需要一个 TextInput,它具有与 iOS 上“消息”应用程序中的 TextView 类似的功能——它应该从一行开始,然后优雅地扩展到更多行,直到达到某个限制(例如 5 行文本),然后根据需要开始滚动到最新的一行。
查看了 SlackTextViewController
但 a) 似乎它有很多我不想要的东西 b) 我想尝试在 React 中保留尽可能多的代码(并且尽可能脱离 objective-C/swift)。
编辑:只想强调,如上所述,我更喜欢 REACT (JAVASCRIPT) 代码,而不是 Objective-C 或 Swift。
最佳答案
我今天尝试了两种不同的方法来做到这一点。两者都不是最好的,但我想我会记录下我的努力,以防它们有帮助。它们都确实具有您正在寻找的效果,尽管有时会因所有异步通信而延迟。
1) 离屏文字高度
所以就在 TextInput 下,我添加了一个具有相同字体和填充等的常规文本字段。我在输入上注册了 onChange
监听器并调用了 setState({text: event.nativeEvent.text})
。文本文件的值(value)来自国家。两者都有 onLayout
监听器。基本上,目标是从(不受限制的)文本中获取 TextInput 的高度。然后我将文本方式隐藏在屏幕外
https://gist.github.com/bleonard/f7d748e89ad2a485ec34
2) 原生模块
实际上,我只需要真实 UITextView 中内容的高度。所以我向 RCTUIManager 添加了一个类别,因为那里已经有几种有用的方法。我摆脱了隐藏的 TextView 。所以 onChange
,我请求高度并通过状态以相同的方式使用它。
https://gist.github.com/bleonard/6770fbfe0394a34c864b
3) Github 公关
我真正希望的是这个 PR 被接受。它看起来会自动执行类似的操作。
关于ios - 制作多行,使用 React-Native 扩展 TextInput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475187/