产品经理:实现一个微信输入框

产品经理:实现一个微信输入框_第1张图片

近期在开发AI对话产品的时候为了提升用户体验增强了对话输入框的相关能力,产品初期阶段对话框只是一个单行输入框,导致在文本内容很多的时候体验很不好,所以进行体验升级,类似还原了微信输入框的功能(只是其中的一点点哈)。

初期认为这应该改动不大,就是把input换成textarea吧。但是实际开发过程发现并没有这么简单,本文仅作为开发过程的记录,因为是基于uniapp开发,相关实现代码都是基于uniapp

简单分析我们大概需要实现以下几个功能点:

  • 默认单行输入
  • 可多行输入,但有最大行数限制
  • 超过限制行术后内容在内部滚动
  • 支持回车发送内容
  • 支持常见组合键在输入框内换行输入
  • 多行输入时高度自适应 & 页面整体自适应

单行输入

默认单行输入比较简单直接使用input输入框即可,使用textarea的时候目前的实现方式是通过设置行内样式的高度控制,如我们的行内高度是36px,那么就设置其高度为36px。为什么要通过这种方式设置呢?因为要考虑后续多行输入超出最大行数的限制,需要通过高度来控制textarea的最大高度。