//初始化并定义大小

UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)];

textview.backgroundColor=[UIColor whiteColor]; //背景色

textview.scrollEnabled = NO;    //当文字超过视图的边框时是否允许滑动,默认为“YES”

textview.editable = YES;        //是否允许编辑内容,默认为“YES”

textview.delegate = self;       //设置代理方法的实现类

textview.font=[UIFont fontWithName:@"Arial" size:18.0]; //设置字体名字和字体大小;

textview.returnKeyType = UIReturnKeyDefault;//return键的类型

textview.keyboardType = UIKeyboardTypeDefault;//键盘类型

textview.textAlignment = NSTextAlignmentLeft; //文本显示的位置默认为居左

textview.dataDetectorTypes = UIDataDetectorTypeAll; //显示数据类型的连接模式(如电话号码、网址、地址等)

textview.textColor = [UIColor blackColor];

textview.text = @"UITextView详解";//设置显示的文本内容

[self.view addSubview:textview];

UITextView的代理方法如下:

//将要开始编辑

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;

//将要结束编辑

- (BOOL)textViewShouldEndEditing:(UITextView *)textView;

//开始编辑

- (void)textViewDidBeginEditing:(UITextView *)textView;

//结束编辑

- (void)textViewDidEndEditing:(UITextView *)textView;

//内容将要发生改变编辑

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text;

//内容发生改变编辑

- (void)textViewDidChange:(UITextView *)textView;

//焦点发生改变

- (void)textViewDidChangeSelection:(UITextView *)textView;

有时候我们要控件自适应输入的文本的内容的高度,只要在textViewDidChange的代理方法中加入调整控件大小的代理即可

- (void)textViewDidChange:(UITextView *)textView{

//计算文本的高度

CGSize constraintSize;

constraintSize.width = textView.frame.size.width-16;

constraintSize.height = MAXFLOAT;

CGSize sizeFrame =[textView.text sizeWithFont:textView.font

constrainedToSize:constraintSize

lineBreakMode:UILineBreakModeWordWrap];

//重新调整textView的高度

textView.frame = CGRectMake(textView.frame.origin.x,textView.frame.origin.y,textView.frame.size.width,sizeFrame.height+5);

}

控制输入文字的长度和内容,可通调用以下代理方法实现

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text

{

if (range.location>=100)

{

//控制输入文本的长度

return  NO;

}

if ([text isEqualToString:@"\n"]) {

//禁止输入换行

return NO;

}

else

{

return YES;

}

}

UITextView退出键盘的几种方式

因为iphone的软键盘没有自带的退键盘键,所以要实现退出键盘需要自己实现,有如下几种方式:

1)如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。

- (void)textViewDidBeginEditing:(UITextView *)textView {

UIBarButtonItem *done =    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone

target:self

action:@selector(dismissKeyBoard)];

self.navigationItem.rightBarButtonItem = done;

[done release];

done = nil;

}

- (void)textViewDidEndEditing:(UITextView *)textView {

self.navigationItem.rightBarButtonItem = nil;

}

- (void)dismissKeyBoard {

[self.textView resignFirstResponder];

}

2)如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。

代码如下:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text

{

if ([text isEqualToString:@"\n"]) {

[textView resignFirstResponder];

return NO;

}

return YES;

}

3)还有你也可以自定义其他加载键盘上面用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。

代码如下:

UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];

[topView setBarStyle:UIBarStyleBlack];

UIBarButtonItem *btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace

target:self

action:nil];

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done"

style:UIBarButtonItemStyleDone

target:self

action:@selector(dismissKeyBoard)];

NSArray * buttonsArray = @[btnSpace, doneButton];;

[doneButton release];

[btnSpace release];

[topView setItems:buttonsArray];

[textView setInputAccessoryView:topView];//当文本输入框加上topView

[topView release];

topView = nil;

-(IBAction)dismissKeyBoard

{

[tvTextView resignFirstResponder];

}

转载于:https://www.cnblogs.com/mafeng/p/5865946.html

UITextView的使用详解相关推荐

  1. UIKit框架-高级控件Swift版本: 5.UITextView方法/属性详解

    前面我们讲完了iOS中的两个表格控件, 现在让我们继续往下看: 1.UITextView常用属性 // 1.设置 UITextView 的文字 var text: String!// 2.设置 UIT ...

  2. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...

  3. iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

    版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: [objc] view plaincopy //  ...

  4. ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解

    一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...

  5. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  6. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  7. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  8. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  9. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

  10. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

最新文章

  1. 实现Spark集群部署 这些公司都经历了什么?
  2. Kettle使用_29 转换里使用参数
  3. LAMP 2.2 Apache配置静态缓存
  4. 【刷题】洛谷 P2709 小B的询问
  5. 数据结构---function
  6. abp+dapper+mysql_ABP公共结构 – 时间与时区设置 - ABP 中文文档
  7. python数据挖掘需要的库_python数据挖掘需要学的内容
  8. JWT跨域身份验证解决方案
  9. 基于p5实现的大五人格“线条”效果
  10. 精简win服务器系统,My Server之管理Win Server 2012精简版
  11. Separating Axis Theorem(分离轴理论)Raycast
  12. Excel中如何把数字设置成以万为单位
  13. 苹果电池显示维修_iPhone电池健康显示“维修”的原因和解决办法
  14. 今天讲一下完整的前端模块化,很实用
  15. 阿里巴巴常用的12种开发工具,赶紧收藏
  16. 硬盘测试软件cry,CrystalDiskMark测试硬盘官方版
  17. HTMLCSS基础篇之十一:字体与颜色样式
  18. spring-webflux理解
  19. 计算机基础知识-进制的运算
  20. ggplot2——图例篇

热门文章

  1. trunk端口_超全!华为交换机端口vlan详解~
  2. 非支架生成的情况下,验证错误信息输出方法,%= f.error_messages %错误
  3. Swing JTree用法总结
  4. 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
  5. 2月25日 局域不变特征的目标跟踪,SURF算子,KLT算子
  6. pytorch torchvision类
  7. RFC792翻译(ICMP主要内容)
  8. mergesort unrecursive 归并排序的非递归实现
  9. Spring: 代理模式JDK, CGlib, ASM
  10. 【SAE 部署 JavaWeb 项目报 404 错误】