UITextView的使用
来源:互联网 发布:mapreduce排序算法 编辑:程序博客网 时间:2024/05/17 01:44
1. 一些属性设置
//初始化并定义大小
UITextView *textview = [[UITextViewalloc]initWithFrame:CGRectMake(20,10, 280, 30)];
textview.backgroundColor=[UIColor whiteColor]; //背景色
textview.scrollEnabled =NO;
//当文字超过视图的边框时是否允许滑动,默认为“YES”
textview.editable =YES;
//是否允许编辑内容,默认为“YES”
textview.delegate =self;
//设置代理方法的实现类
textview.font=[UIFontfontWithName:@"Arial"size:18.0];
//设置字体名字和字体大小;
textview.returnKeyType = UIReturnKeyDefault;
//return键的类型
textview.keyboardType = UIKeyboardTypeDefault;//键盘类型
textview.textAlignment = NSTextAlignmentLeft;//文本显示的位置默认为居左
textview.dataDetectorTypes =UIDataDetectorTypeAll;
//显示数据类型的连接模式(如电话号码、网址、地址等)
textview.textColor = [UIColorblackColor];//显示文本的颜色
textview.text =@"UITextView详解";//设置显示的文本内容
//将textview添加到view中
[self.viewaddSubview:textview];
//添加滚动区域
_textView.contentInset =UIEdgeInsetsMake(-11, -6, 0, 0);//这样设置以后会紧贴左边
//获得焦点
[_textViewbecomeFirstResponder]; 设置以后启动直接弹出键盘
//是否显示滚动条
_textView.showsVerticalScrollIndicator =YES;
// 自适应高度
_textView.autoresizingMask =UIViewAutoresizingFlexibleHeight;
//设置其为圆角
[_textView.layersetCornerRadius:10];
2. 代理方法
UITextView的代理方法如下:
//将要开始编辑
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
//将要结束编辑
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
//开始编辑
- (void)textViewDidBeginEditing:(UITextView *)textView;
//结束编辑
- (void)textViewDidEndEditing:(UITextView *)textView;
//内容将要发生改变编辑
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)rangereplacementText:(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.textsizeWithFont: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 ([textisEqualToString:@"\n"])
{
//禁止输入换行
returnNO;
}
else
{
returnYES;
}
}
3.退出键盘
方法1:如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。
使用代理方法
- (void)textViewDidBeginEditing:(UITextView *)textView
{
//键盘弹出开始进行编辑的时候才出现这个按钮
UIBarButtonItem *done = [[[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:selfaction:@selector(leaveEditMode)] autorelease];
_rootView.navigationItem.rightBarButtonItem= done;
}
- (void)leaveEditMode
{
//退出键盘,第一响应者辞职
[_textView resignFirstResponder];
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
//结束编辑时清空这个按钮
_rootView.navigationItem.rightBarButtonItem= nil;
//这里不能直接写_navigationItem,这样写的话相当于是说self的属性,即viewconotroller的,但这个done按钮不是要加到那上边的,而是加到rootView上的
}
方法2:如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)rangereplacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"])
{
[_textView resignFirstResponder];
return NO;
}
else
{
return YES;
}
}
方法3:
//在弹出的键盘上加一个view来放置两个按键,其中一个done按钮就用于键盘退出
//创建一个UIToolbar
UIToolbar *topView = [[[UIToolbaralloc] initWithFrame:CGRectMake(0,0, 320, 30)] autorelease];
//设置UIToolbar样式
[topView setBarStyle:UIBarStyleBlack];
//创建并初始化UIToolbar上面的按钮
UIBarButtonItem *helloButton = [[[UIBarButtonItemalloc] initWithTitle:@"Hello"style:UIBarButtonItemStylePlaintarget:selfaction:nil]autorelease];
UIBarButtonItem *btnSpace = [[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpacetarget:selfaction:nil];
UIBarButtonItem *doneButton = [[[UIBarButtonItemalloc] initWithTitle:@"Done"style:UIBarButtonItemStyleDonetarget:selfaction:@selector(dismissKeyBoard)]autorelease];
//组成按钮数组
NSArray *buttonsArray = [NSArrayarrayWithObjects:helloButton,btnSpace,doneButton,nil];
//设置数组到UIToolbar中
[topView setItems:buttonsArray];
//加到键盘上
//在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是UIToolBar,用于回收键盘。
[_textView setInputAccessoryView:topView];
- (void)dismissKeyBoard
{
[_textView resignFirstResponder];
}
4.
// 自定义选择文字后的菜单
UIMenuItem *menuItem = [[[UIMenuItemalloc] initWithTitle:@"分享到新浪微博"action:@selector(changeColor)]autorelease];
UIMenuController *menu = [UIMenuControllersharedMenuController];
[menu setMenuItems:[NSArrayarrayWithObject:menuItem]];
- 使用UITextView的问题及自定义UITextView
- UITextView的使用详解
- UITextView的使用详解
- UITextView 的使用
- UITextView的使用记录
- UITextView的使用详解
- UITextView的使用详解
- UITextView的使用详解
- UITextView的使用详解
- UITextView的使用
- UITextView的使用详解
- UITextView的使用
- UITextView的使用
- UITextView的使用
- UITextView的一些使用技巧
- swift中UITextView的使用
- swift中UITextView的使用
- swift中UITextView的使用
- springMVC中两种validation的简单使用
- 科学计算:Python ----线性代数基础
- nyoj 124 中位数 【水,nth_element()练习】
- 数据结构概念
- saiku二次开发pom文件
- UITextView的使用
- 传感器的分类
- mysql sql语句为表批量怎加字段
- ruby 关于目录操作
- 关于接口、变量、指针、函数名和引用之间的联系
- htpasswd 的使用
- leetcode笔记--Roman to Integer & Integer to Roman
- 到底EJB是什么
- Java内存泄漏发生的情况