最近项目有需求,需要实现一个类似微信聊天输入框的组件,用在全平台的评论功能中。大概需求就是输入的文字占满一行时,自动折行并且增大输入框的高,输入框的高有默认的最大值。在此,记录一下遇到的问题。

1、项目中用到了三方库IQKeyboardManager,如果开启IQKeyboardManager的话,在Controller中侧滑会遇到bug,而且会影响其他的页面,这是得不偿失的,所以,最后禁用了IQKeyboardManager。

如果打算关闭侧滑,启用IQKeyboardManager的话,在使用时需要注意[IQKeyboardManager sharedManager].movedDistance这个属性,这个是为了弹起键盘时调整距离textView或者textField的距离的属性,会使整个页面的View上弹一段距离,计算位置的时候需要考虑。

2、这个输入框组件我使用的是UITextView,在计算文字所占高度的时候,需要注意的textView.textContainerInset默认上下有8个pt的距离,另外textView.lineFragmentPadding默认左右有5个pt的距离,在使用boundingRectWithSize计算字符串所占高度的时候需要把这些都减去,不然的话动态计算的字符串的高度肯定是有问题的。参考:

//注意:textView默认上下有8个pt的textContainerInset,左右有5个pt的lineFragmentPadding//NSStringDrawingUsesFontLeading :计算高度,这个属性算上行间距了NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:self.font, NSFontAttributeName,nil];//height :textView总高度CGFloat height = [textView.text boundingRectWithSize:CGSizeMake(self.textView.bounds.size.width - 2 * self.textView.textContainer.lineFragmentPadding, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:dic context:nil].size.height + 2 * self.textView.textContainerInset.top;

3、在动态增大UITextView高的时候,会出现UITextView自动滑动的问题,导致光标不在最下边,光标会从最底部往上滑动一段距离。解决方案,设置下边两项内容:

//初始化增加
textView.layoutManager.allowsNonContiguousLayout = NO;- (void)textViewDidChange:(UITextView *)textView {//增加[textView scrollRangeToVisible:NSMakeRange(textView.selectedRange.location, 1)];
}

4、当UITextView在高度达到最大的情况下,再折行的话,光标所在行始终会紧贴UITextView的底部,没有了textView.textContainerInset距离底部8pt的视觉效果,但是手动拉到UITextView的最底部的时候textView.textContainerInset的8pt是存在的,只是自动换行的时候不会滚动到最底部,所以,这个效果肯定是不行的。

看了微信的效果,我观察到微信输入框的下边应该是还有一个bkView,背景色和UITextView一样。所以,最终我也采用了这种方案,将UITextView的textContainerInset和textContainer.lineFragmentPadding中的默认边距全设置为0,将UITextView视图加载到一个bkView(背景视图)上,这样UITextView距离周边的距离全部转变为UITextView距离bkView的距离了。

最终效果如下:

iOS仿微信聊天输入框、评论输入框相关推荐

  1. iOS仿微信聊天页面长按气泡弹窗

    显示效果图如上,

  2. react实现仿微信聊天输入框

    react实现仿微信聊天输入框 实现原理: 利用H5提供的元素可编辑属性 contentEditable 使普通的html元素具有和输入框一样的编辑功能 其他实现方式(较复杂): 使用textarea ...

  3. html仿微信评论输入框,简单仿微信朋友圈评论功能

    [实例简介] 简单实现了微信朋友圈评论的功能,被点击的评论能够随着输入框高度的改变而改变位置! [实例截图] [核心代码] 简单仿微信朋友圈评论 └── TalkInTalk ├── AndroidM ...

  4. native聊天界面 react_ReactNative仿微信聊天APP实战项目|RN输入框表情

    本帖最后由 xiaoyan2015 于 2019-9-4 13:35 编辑 今天给大家分享的是 RN 聊天室项目,基于 react-native+react-navigation+react-redu ...

  5. h5聊天室案例|仿微信聊天界面|多人群聊

    html5仿微信聊天室weChatRoom案例|多人群聊互动|仿微信聊天界面 该项目是使用html5+css3+zepto+swiper+wcPop等技术开发的仿微信聊天室,捣鼓调试了很长时间,在手机 ...

  6. h5仿微信聊天(高仿版)、微信聊天表情|对话框|编辑器

    之前做过一版h5微信聊天移动端,这段时间闲来无事就整理了下之前项目,又重新在原先的那版基础上升级了下,如是就有了现在的h5仿微信聊天高仿版,新增了微聊.通讯录.探索.我四个模块 左右触摸滑屏切换,聊天 ...

  7. 基于Flutter的仿微信聊天应用

    前言   作为当下风头正劲的跨端框架,flutter成为原生开发者和前端开发者争相试水的领域,笔者将通过一个仿微信聊天的应用,展现flutter的开发流程和相关工具链,旨在熟悉flutter的开发生态 ...

  8. js模拟群聊天php,jquery仿微信聊天界面实例分享

    本文主要为大家详细介绍了jquery仿微信聊天界面的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 首先看一下我们的效果图. 这个颜色可能搭配的有些不合适,但基本功能大 ...

  9. 高仿微信聊天界面长按弹框样式

    效果图 背景 在公司做的项目里面,刚好有需要用到微信聊天界面长按弹框样式这种UI的. 网上找了一下,没找到. Android现成的 ListPopupWindow又不能满足需求. 因此在非上班时间撸一 ...

最新文章

  1. RecycleView 各个条目的信息混乱
  2. java list 不包含_java判断list是否包含某个值
  3. 牛客网——华为机试(题17:坐标移动)(Java)
  4. python:类的空间问题 类与类之间的关系
  5. [CF]Codeforces Round #529 (Div. 3)
  6. centos6.5下搭建oracle 11g
  7. spring boot配置对上传文件的大小限制
  8. android游戏开发框架libgdx的使用(四)--舞台和演员
  9. 2012高等学校计算机等级考试试卷二级 vb.net程序设计,2012上海市高等校计算机等级考试试卷二级VBNET程序设计.docx...
  10. vue.js学习02之vue-cli脚手架创建项目环境搭建
  11. R语言ETL工程:连接(join)
  12. ionicView视图的生命周期
  13. 微信开发者工具——支持less的插件
  14. 随机森林python反欺诈_基于三明治结构深度学习框架的金融反欺诈模型研究与应用...
  15. Python-初应用:乌龟吃鱼(菜菜狂踩雷现场、典型低级错误)
  16. 论手机网站(wap)网页广告防屏蔽的方法
  17. 点桌面计算机一直在加载,Win7系统在桌面点右键一直转圈的解决方法
  18. 性能测试 - 响应时间的衡量指标 RPS Average Min Max P90 P95 P99
  19. 计算机函数乘法word,【2人回答】Word里相乘的函数是什么?-3D溜溜网
  20. ubuntu介绍以及使用

热门文章

  1. 武汉购物全攻略[转自PAIPAI社区-武汉版]
  2. 红蓝对抗之常见网络安全事件研判、了解网络安全设备、Webshell入侵检测
  3. android手机可以换字体吗,Android手机字体随意换-字体管家
  4. 广西免考职称英语计算机,2016年广西职称英语免考条件
  5. python绘制k线图_Python使用PyQtGraph绘制股票行情K线图
  6. 原生js实现的拾色器插件 - ColorPicker
  7. Vue公众号微信支付
  8. python通过ip获取mac地址_Python3根据IP地址获取MAC地址
  9. 群辉 RAID1 数据恢复小记
  10. 全球汽车色彩流行报告:白黑银灰最受欢迎,中国车主最爱白色车