Objective-C UITextView的使用方法

//初始化并定义大小

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

}

时间: 2024-10-13 00:57:13

Objective-C UITextView的使用方法的相关文章

UITextView实现placeHolder方法汇总

UITextField中有一个placeholder属性,可以设置UITextField的占位文字,起到提示用户的作用.可是UITextView就没那么幸运了,apple没有给UITextView提供一个类似于placeholder这样的属性来供开发者使用.下面我就把自己能够想到的和网友提供的方法汇总一下,让更多的开发者知道,原来有这么多方法可以实现UITextView的占位文字. 方法一: 1.把UITextView的text属性当成“placeholder”使用. 2.在开始编辑的代理方法里

Objective-C( 三方法的声明与实现)

OC方法的声明与实现 oc方法的声明在@interface中 大括号外@end上面 oc方法的实现在@implementation 中@end上面 OC方法中,一个参数对应一个冒号 方法名: 例  fangFaMing:(冒号也是方法名的一部分) -返回值类型  方法名:参数名:(参数类型)参数 参数名:(参数类型)参数 ; 例  -(int)fangFaMing:sumWithNum1:(int)num1 andNum2:(int)num2; ??此处空格 易犯错误 1.只写声明,不写实现 2

iOS开发UItextview常用属性方法

// //  ViewController.m //  TextViewAll #import "ViewController.h" @interface ViewController ()<UITextViewDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor yellowC

iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象

1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较.这一篇文章,我准备为大家介绍一下奇葩的Objective-C语言的语法和使用.这篇文章主要讲Objective-C的理论概念. 2.学习目标 2.1 Objective-C语言面向对象的特性与其他语言(C++)类比学习,声明定义一个MyObject类,并创建这个类的实例. 2.2 Objectiv

自定义UITextView实现placeholder效果

今天项目中有一个界面需要通过UITextView实现,并且具有UITextField的placeholder功能,自己昨晚之后觉得蛮有趣的,拿出来分享一下. 先放最终效果完成图: 具体思路就是创建一个UITextView,然后在其上面添加一个UILable,并通过UITextView的代理方法监听其内容的改变,来判断UILable是否需要隐藏. 代码如下: 1 UITextView *textView = [[UITextView alloc] init];//创建一个textView 2 [s

UITextView 学习

UITextView文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文.常见UITextView使用在APP的软件简介.内容详情显示.小说阅读显示.发表空间内容输入.说说文本框.评论文本框等. UITextView的使用有它本身的代理方法,也有继承于父类的方法.本身的方法有从开始编辑到结束编辑的整个过程的监听,继承的方法主要是继承于UIScrollView的方法,因为关于滚动的控制都属于UIScrollView的. 常用属性设置: UI

UITextView的使用详解

//初始化并定义大小 UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)]; textview.backgroundColor=[UIColor whiteColor]; //背景色 textview.scrollEnabled = NO;    //当文字超过视图的边框时是否允许滑动,默认为“YES” textview.editable = YES;        //是否允许

UITextView自适应内容的高度且实现光标总是距离键盘一段距离而滑动条却可以延伸到光盘

这几天遇到个想要实现的效果,如题,想了一段时间,昨天实现了,这里说下我实现的方法. 有时候我们使用uitextview编辑文本时,在输入框贴着键盘的情况下(即不设置UITextView的frame距离键盘一段距离)想让输入时光标一直距离键盘一段距离,这样用户的输入体验会好很多,UItextView没有发现这样的代理方法或属性来直接实现这一效果,于是我考虑用一个UIScrollVIew和一个UITextView来实现,即即将UITextVIew贴在UIScrollView上,然后通过UITextV

UITextView上添加默认文字

1. 实现UITextView的代理方法 text.view.delegate = self; 2. 在UITextView上覆盖UILabel ps:必须实现 label.enabled = NO; label.backgroundColor = [UIColor clearColor]; 3. 在UITextView - Delegate中实现 -(void)textViewDidChange:(UITextView *)textView { inputTextView.text =  te