//初始化并定义大小

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];

}

 

UITextView的使用详解的更多相关文章

  1. 【转】UITextView的使用详解

    //初始化并定义大小 UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)]; te ...

  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通信协议详解

    // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 // 7. ...

  4. iOS应用开发详解

    <iOS应用开发详解> 基本信息 作者: 郭宏志    出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...

  5. IOS 触摸事件分发机制详解

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:MelonTeam 前言 很多时候大家都不关心IOS触摸事件的分发机制的实现原理,当遇到以下几种情形的时候你很可能抓破头皮都找不到解决方案 ...

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

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 ...

  7. iOS学习——(转)UIResponder详解

    本文转载自:ios开发 之 UIResponder详解 我们知道UIResponder是所有视图View的基类,在iOS中UIResponder类是专门用来响应用户的操作处理各种事件的,包括触摸事件( ...

  8. 《iOS 7 应用开发实战详解》

    <iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...

  9. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

随机推荐

  1. linux原始套接字(1)-arp请求与接收

    一.概述                                                   以太网的arp数据包结构: arp结构op操作参数:1为请求,2为应答. 常用的数据结构如 ...

  2. IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)

    IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇) 当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事. <IO - 同步,异步,阻塞,非阻塞 >是我在开始学习e ...

  3. [译] 企业级 OpenStack 的六大需求(第 2 部分):开放架构和混合云兼容

    全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 在本系列的第一部分,我介绍了企业级 OpenStack 的六大需求.现在,我 ...

  4. css3 background

    background是一个很重要的css属性,在css3中新增了很多内容.一方面是原有属性新增了属性值,另一方面就是新增了3个属性. 一.css3中新增属性值介绍 css2的background有5个 ...

  5. git错误:Target branch can't be blank

    一.问题描述 遇到一个问题:Target branch can't be blank 因为问题再没有重现,所以拿一张网上的图: 情况是,比如a是项目的owner,有一个项目a/Project. b从a ...

  6. [转]asp.net c# 网上搜集面试题目(附答案)

    本文转自:http://www.cnblogs.com/hndy/articles/2234188.html 1.String str=new String("a")和String ...

  7. 【2016-10-10】【坚持学习】【Day1】【观察者模式】

    今天学习了观察者模式 定义: 一个实体变化会影响其他实体变化 例子: 红绿灯与汽车 红绿灯是观察目标 汽车是实际观察者 灯的变化会影响车是停止还是前进. 例子: 游戏中,一个战队由若干队员组成,当其中 ...

  8. Hibernate延迟加载Lazy

    Hibernate延迟加载Lazy 延迟加载(lazy load)又称为懒加载,延迟加载的机制是为了避免一些无谓性能的开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作 如 ...

  9. PHP执行定时任务

    PHP执行定时任务 1.当PHP像文件写入信息的时候 <?php for ($i=0; $i < 10; $i++) { $str="我是第".$i."条&q ...

  10. 渗透中Necat的另类用法

    Necat 是一个伟大而实用的用于 TCP 和 UPD 网络连接协议的读写程序.同时 Necat 也被誉为网络中的瑞士军刀,在许多黑客教程中 Necat 也被广泛使用.Necat 最常见用途是设置反向 ...