转自:http://bbs.9ria.com/thread-244445-1-1.html

一、新建一个textView

//初始化
UITextView *textView = [[[UITextView alloc] init] autorelease];

//设置代理 需在interface中声明UITextViewDelegate
textView.delegate = self;

//字体大小
textView.font = [UIFont systemFontOfSize:16];

//添加滚动区域
textView.contentInset = UIEdgeInsetsMake(-11, -6, 0, 0);

//是否可以滚动
textView.scrollEnabled = NO;

//获得焦点
[textView becomeFirstResponder];

二、键盘操作

  1. //返回键的类型
  2. textView.returnKeyType = UIReturnKeyDefault;
  3. //键盘类型
  4. textView.keyboardType = UIKeyboardTypeDefault;

复制代码

三、隐藏键盘的几种方式  个人还是认为最方便的是在键盘上加上一个ToolBar,在上面加上一个按钮来隐藏键盘
①在键盘上加上隐藏按钮

  1. //定义一个toolBar
  2. UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
  3. //设置style
  4. [topView setBarStyle:UIBarStyleBlack];
  5. //定义两个flexibleSpace的button,放在toolBar上,这样完成按钮就会在最右边
  6. UIBarButtonItem * button1
    =[[UIBarButtonItem  alloc]initWithBarButtonSystemItem:                
                           UIBarButtonSystemItemFlexibleSpace target:self
    action:nil];
  7. UIBarButtonItem * button2 =
    [[UIBarButtonItem  alloc]initWithBarButtonSystemItem:                   
                        UIBarButtonSystemItemFlexibleSpace target:self
    action:nil];
  8. //定义完成按钮
  9. UIBarButtonItem * doneButton = [[UIBarButtonItem
    alloc]initWithTitle:@"完成" style:UIBarButtonItemStyleDone  target:self
    action:@selector(resignKeyboard)];
  10. //在toolBar上加上这些按钮
  11. NSArray * buttonsArray = [NSArray arrayWithObjects:button1,button2,doneButton,nil];
  12. [topView setItems:buttonsArray];
  13. [textView setInputAccessoryView:topView];

复制代码

最终效果

<ignore_js_op>

还有几种也可隐藏键盘的方式
②用回车键,前提是你的textView中不需要用到回车键

  1. -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  2. if ([text isEqualToString:@""])
  3. {
  4. [textView resignFirstResponder]; return NO;
  5. }
  6. return YES;
  7. }

复制代码

③触摸空白处隐藏键盘

  1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  2. {
  3. //隐藏键盘
  4. [textView resignFirstResponder];
  5. }

复制代码

四、
使键盘不挡住输入框    
 在view中添加一个子view,设置此子view的tag值为1000,在此view上添加一个textView和一个发送按钮,如下图;我们要达到
textView的键盘弹出时,整个View往上平移,键盘消失,view往下平移的效果,模拟发送短信的界面。
<ignore_js_op>

设置textView圆角

  1. //设置textView圆角
  2. [self.textView.layer setCornerRadius:10];

复制代码

①、在viewWillAppear中添加键盘监听事件

  1. //添加键盘的监听事件
  2. //注册通知,监听键盘弹出事件
  3. [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification
    object:nil];
  4. //注册通知,监听键盘消失事件
  5. [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(keyboardDidHidden) name:UIKeyboardDidHideNotification
    object:nil];

复制代码

②、完成①selector中键盘弹出keyboardDidShow:和消失keyboardDidHidden方法      在.m文件#import后面添加

  1. //动画时间
  2. #define kAnimationDuration 0.2
  3. //view高度
  4. #define kViewHeight 56

复制代码

键盘出现

  1. // 键盘弹出时
  2. -(void)keyboardDidShow:(NSNotification *)notification
  3. {
  4. //获取键盘高度
  5. NSValue *keyboardObject = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
  6. CGRect keyboardRect;
  7. [keyboardObject getValue:&keyboardRect];
  8. //调整放置有textView的view的位置
  9. //设置动画
  10. [UIView beginAnimations:nil context:nil];
  11. //定义动画时间
  12. [UIView setAnimationDuration:kAnimationDuration];
  13. //设置view的frame,往上平移
  14. [(UIView *)[self.view viewWithTag:1000]
    setFrame:CGRectMake(0,
    self.view.frame.size.height-keyboardRect.size.height-kViewHeight, 320,
    kViewHeight)];
  15. [UIView commitAnimations];
  16. }

复制代码

键盘消失

  1. //键盘消失时
  2. -(void)keyboardDidHidden
  3. {
  4. //定义动画
  5. [UIView beginAnimations:nil context:nil];
  6. [UIView setAnimationDuration:kAnimationDuration];
  7. //设置view的frame,往下平移
  8. [(UIView *)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-kViewHeight, 320, kViewHeight)];
  9. [UIView commitAnimations];
  10. }

复制代码

效果图:

<ignore_js_op>

<ignore_js_op>

textView的用法及技巧的更多相关文章

  1. MFC总结之CListCtrl用法及技巧(二)

    续第一篇:MFC总结之CListCtrl用法及技巧(一) http://blog.csdn.net/zwgdft/article/details/7560592 本篇重点介绍:禁止拖动表头.让第一列居 ...

  2. MFC总结之CListCtrl用法及技巧(一)

    本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...

  3. (转载) TextView使用一些小技巧

    TextView使用一些小技巧 标签: textviewandroid开发 2015-10-09 16:13 810人阅读 评论(0) 收藏 举报  分类: Android(20)  本文主要讲一些T ...

  4. OpenResty 反向代理的用法与技巧

    Nginx最开始是作为反向代理被熟知的,基于它的OpenResty的自然也是支持反向代理的,下面我们就来看看它的一些基本用法以及在使用过程中的一些技巧. 一.基本用法 在业务环境中,可能会将OpenR ...

  5. border-radius的用法与技巧总结

    border-radius属性用法重点罗列 border-radius: none | <length>{1,4} [/<length>{1,4}] ? .如果存在反斜杠/,则 ...

  6. grep的用法,小技巧,模板中含有\t时:grep -P "^\t" file

    linux中grep和find的用法区别 本文章详细的介绍了关于在linux中的grep和find两个命令的用法介绍,以及后面总结了它们两年用法区别哦. 先我们来介绍一下关于grep用法和一些小注意事 ...

  7. Fragment 的用法小技巧

    public static class ArrayListFragment extends ListFragment { int mNum; /** * Create a new instance o ...

  8. xpath相关用法及技巧

    本节讲解网页解析神器----XPath lxml下载 xpath基本用法 xpath插件 Xpath及XML路径语言,它是一门在XML文档查找信息的语言. 一:lxml下载以及安装 首先需要解决lxm ...

  9. javascript 笔记——bind 用法小技巧

    $(function(){ //代码阅读能力 function speak(name){ return "Hello " + name; } //此处写代码 //方法一 //重点是 ...

随机推荐

  1. 8行代码批量下载GitHub上的图片

    [问题来源] 来打算写一个的小游戏,但是图片都在GitHub仓库中,GitHub网页版又没有批量下载图片的功能,只有单独一张一张的下载,所以自己就写了个爬虫脚本模拟人的操作把整个页面上需要的图片爬取下 ...

  2. 基于docker实现redis高可用集群

    基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...

  3. 插入订单并且输出订单号的sql存储过程

    --插入订单-- create proc InsertOrders ( @OrderNumber varchar(300), @OrderState varchar(30), @OrderType v ...

  4. Tsx写一个通用的button组件

    一年又要到年底了,vue3.0都已经出来了,我们也不能一直还停留在过去的js中,是时候学习并且在项目中使用一下Ts了. 如果说jsx是基于js的话,那么tsx就是基于typescript的 废话也不多 ...

  5. sqlcipher的php扩展运行在fast-cgi:php-fpm下工作不正常

    今天发现了这样的问题,php-fpm运行sqlcipher时,有些数据库工作正常,有些却不正常. 不正常的,都在日志上报错,也就是php处理异常了. 这个报错发生在执行sql语句时,通常就是sqlci ...

  6. Mac上安装并配置JDK

    1,下载 点击 官网 ,进入下载界面, 同意协议内容 找到对应的Mac版本, 2,安装 安装下载下来的文件,期间会要求输入一次电脑密码,然后自动安装完. 如果显示文件已经损坏,打开 终端 输入 sud ...

  7. [FPGA]Verilog利用PWM调制巧妙完成RGB三色彩虹呼吸灯(给简约的题目以美妙的解答)

    概述 实现彩虹呼吸灯 题目就是这么简短,但这是目前我碰到的最有意思的一道题目,因为他有无数种解决方法,并且每一种都是那么高级或者巧妙,比如 可以利用3路不同初相的PWM调制信号驱动三颗RGB灯重叠呼吸 ...

  8. Python和BeautifulSoup进行网页爬取

    在大数据.人工智能时代,我们通常需要从网站中收集我们所需的数据,网络信息的爬取技术已经成为多个行业所需的技能之一.而Python则是目前数据科学项目中最常用的编程语言之一.使用Python与Beaut ...

  9. 学会使用这些,你的Windows可能会焕然一新

    星选哥用Windows也已经好多年了,今天用室友的电脑才发现,桌面真可以影响一个人的心情,从而影响工作,学习,生活. 所以准备推荐一些好用且轻量的小工具,让你时时刻刻有个好心情. 室友的桌面(还有很多 ...

  10. fastjson自定义序列化竟然有这么多姿势?

    本文介绍下fastjson自定义序列化的各种操作. 一.什么是fastjson? fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSO ...