UITextView仿微信输入

UITextView仿微信输入

输入和删除文字的时候不会出现抖动,也不会出现一行文字显示一半的情况,代码中部分数据用的是死数据,用的时候要灵活运用,适当调整一下!

#define textFont [UIFont systemFontOfSize:16]

#import "ViewController.h"

@interface ViewController ()<UITextViewDelegate>

@property (nonatomic, weak) UITextView *textView;

@property (nonatomic, assign, getter=isMark) BOOL mark;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UITextView *textView=[[UITextView alloc]initWithFrame:CGRectMake(100, 200, 214, 30)];

_textView=textView;

_textView.font=textFont;

//不然设置的行间距不起作用

_textView.text=@" ";

//设置控件文字的上下距离

_textView.textContainerInset=UIEdgeInsetsMake(5, 0, 5, 0);

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

paragraphStyle.lineSpacing = 5;// 字体的行间距

NSDictionary *attributes = @{

NSFontAttributeName:textFont,

NSParagraphStyleAttributeName:paragraphStyle

};

textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];

_textView.delegate=self;

textView.backgroundColor=[UIColor redColor];

[self.view addSubview:textView];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewTextDidChange:) name:UITextViewTextDidChangeNotification object:textView];

}

/**

*  设置输入超过三行(高度78)自动滚入不可见区域

*

*  @param notification <#notification description#>

*/

- (void)textViewTextDidChange:(NSNotification *)notification{

if([_textView.text hasPrefix:@" "]){

_textView.text=[_textView.text stringByReplacingOccurrencesOfString:@" " withString:@""];

}

CGFloat height = _textView.contentSize.height>78?78:_textView.contentSize.height;

_textView.frame=CGRectMake(100, CGRectGetMaxY(_textView.frame)-height, _textView.frame.size.width, height);

return;

}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

_mark=YES;

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

_mark=NO;

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

/**

*  判断是否拖动来设置frame

*/

if(!self.isMark){

NSLog(@"%lf",_textView.contentSize.height);

if(_textView.contentSize.height>78){

[_textView setContentOffset:CGPointMake(0, _textView.contentSize.height-78)];

}else{

[_textView setContentOffset:CGPointMake(0, 0)];

}

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

时间: 2024-10-31 09:28:39

UITextView仿微信输入的相关文章

Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)

我们知道,在很多时候,我们都不用Android内置的一些控件,而是自己自定义一些自己想要的控件,这样显得界面更美观. 今天主要是讲自定义AlertDialog和popupWindow的使用,在很多需求中,我们往往需要这样一个功能,就是点击一个按钮或者其它控件,弹出一个对话框,让用户可以在这个对话框中做一些事,比如输入.选择.提示.....等等,那么,这个弹出对话框的功能我们都知道可以用popupWindow和AlertDialog实现,的却,popupWindow被称为万能的,因为它的布局都是我

凡信2.0beta发布-超仿微信的开源项目 (更新了朋友圈和钱包)

凡信的第一个版本于2015年4月份发布,之后由于自己工作忙碌的原因,一直没有重大的更新内容.2016年1月份抽空做了一些更新.主要是加入了朋友圈和钱包这两块内容,以及对第一版的一些bug的修复.凡信2.0依然是基于环信IM通信云SDK开发的,当前状态下第三方通信云趋于火热,环信也这一年走过四轮共计几千万美元的融资,开发者用户也呈现几万的增长.这个项目也算是给需要集成IM云的开发者提供一个参考,给刚接触Android开发,对Android整体开发框架还很模糊同学提供一个学习的教材. 关于此次更新的

网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 本文讲描述, 如何在网页端实现一个仿微信的聊天窗口界面, 以及其中涉及到的一些技术点. 作者前端是初学者, 请大拿们轻拍. 效果展示: 先打下广告: 网页闯关游戏入口(请狠狠地点击我, ^_^) . 仿微信窗口的设计源于第四关--倾听女神的故事. 这种聊天对话的布局模式, 比PC端QQ的那种聊天方式更贴近移动端, 我个人感觉. 需求设定:

iOS开发-仿微信图片分享界面实现

分享功能目前几乎已成为很多app的标配了,其中微信,微博等app的图片分享界面设计的很棒,不仅能够展示缩略图,还可以预览删除.最近我在做一款社交分享app,其中就要实现图文分享功能,于是试着自行实现仿微信分享风格的功能. 核心思想: 主要是使用UICollectionView来动态加载分享图片内容,配合预览页面,实现动态添加和预览删除图片效果. 实现效果: 核心代码如下: 分享界面: // // PostTableViewController.h // NineShare // // Creat

仿微信添加标签效果

转载请注明出处:http://blog.csdn.net/xiaoyuan511 一. 概述 可以说微信做的用户体验太棒了,可以做到老少皆宜,给个赞,我们也同时应该告诫自己,用户体验应该向微信看齐,微信就是我们的标杆,那我们今天也来仿一仿微信添加的标签功能.只能仿着做了,真是做不到微信的那种体验.甘拜下风. 我们上篇学习了shape属性的用法,那我们今天就用shape来做下微信的标签功能.先看一下效果. 我不仅用到了shape属性,还用到了翔哥的标签布局FlowLayout跟TagFlowLay

HTML5仿微信聊天界面、微信朋友圈实例

这几天使用H5开发了一个仿微信聊天前端界面,尤其微信底部编辑器那块处理的很好,使用HTML5来开发,虽说功能效果并没有微信那么全,但是也相当不错了,可以发送消息.表情,发送的消息自动回滚定位到底部,另外可以对消息.图片.视频有不同的右键处理提示,还有打赏.占屏等操作. html代码片段: <!--BEGIN 打赏--> <div class="js_dialog" id="J_Dialog_dashang" style="display:

web版仿微信聊天界面|h5仿微信电脑端案例开发

前几天开发了一款手机端h5仿微信聊天,人唯有不停学习才能进步,这段时间倒腾着整理了下之前项目,又重新在原先的那版基础上开发了一款仿微信聊天电脑端web版本,聊天页面又重新优化了多图预览.视频播放,右键菜单menu,聊天底部编辑器模块重新优化源码,弹窗则是继续使用之前自己开发的wcPop.js,具体看项目效果图吧! 效果图: // ...表情.选择区切换 $(".wc__editor-panel").on("click", ".btn", func

h5移动端聊天室|仿微信界面聊天室|h5多人聊天室

今年的FIFA世界杯甚是精彩,最近兴致高涨就利用HTML5开发了一个手机端仿微信界面聊天室,该h5聊天室采用750px全新伸缩flex布局,以及使用rem响应式配合fontsize.js,页面弹窗则是使用自己开发的wcPop.js插件:编辑器部分由原先的单一表情新增为动图表情,实现了消息.表情发送 | 大图.视频效果预览 | 仿微信红包.打赏等微交互功能. 案例截图: // ...滚动聊天区底部 function wchat_ToBottom(){ //$(".wc__chatMsg-panel

vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版

一.项目介绍 基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室——vueWebChat,实现了发送消息.表情(动图),图片.视频预览,右键菜单.截屏.截图可直接粘贴至文本框进行发送. 二.技术框架 MVVM框架:Vue2.5.6 状态管理:Vuex 页面路由:Vue-router iconfont图标:阿里巴巴字体图标库 自定义滚动条:vue-gemini-sc