ios - 制作多行,使用 React-Native 扩展 TextInput

标签 ios ios8 react-native

我正在开发一个 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 被接受。它看起来会自动执行类似的操作。

https://github.com/facebook/react-native/pull/1229

关于ios - 制作多行,使用 React-Native 扩展 TextInput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475187/

相关文章:

ios - 无法在多行 nsstring 上获得投影

xcode - 如何在 Swift 中从具有多种内容类型的字典制作表格?

react-native - 初始化 Drawer.Navigator 时,抽屉会闪烁,尽管在参数中我传递了 openByDefault={ false }

react-native - 将输入重点放在 React Native 中的 Modal 负载上

ios - 在 iOS 9 上以静音模式播放声音

iphone - CGAffineTransformMakeRotation 之后的 UIImageView "squashed"

ios - presentViewController 在 iOS 8 上因 EXC_BAD_ACCESS 崩溃

react-native - expo-av 裸错误 : Missing audio recording permissions

ios - 用于自动续订订阅通知的应用内购买

ios - 获取 UIPopoverBackgroundVisualEffectView 的警告