UITextView的使用
2016-06-14 13:08
537 查看
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.layer
setCornerRadius: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 ([text
isEqualToString:@"\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 = [[[UIToolbar
alloc] initWithFrame:CGRectMake(0,
0, 320,
30)] autorelease];
//设置UIToolbar样式
[topView setBarStyle:UIBarStyleBlack];
//创建并初始化UIToolbar上面的按钮
UIBarButtonItem *helloButton = [[[UIBarButtonItem
alloc] initWithTitle:@"Hello"
style:UIBarButtonItemStylePlain
target:self
action:nil]
autorelease];
UIBarButtonItem *btnSpace = [[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];
UIBarButtonItem *doneButton = [[[UIBarButtonItem
alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(dismissKeyBoard)]
autorelease];
//组成按钮数组
NSArray *buttonsArray = [NSArray
arrayWithObjects:helloButton,btnSpace,doneButton,nil];
//设置数组到UIToolbar中
[topView setItems:buttonsArray];
//加到键盘上
//在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是UIToolBar,用于回收键盘。
[_textView
setInputAccessoryView:topView];
- (void)dismissKeyBoard
{
[_textView
resignFirstResponder];
}
4.
// 自定义选择文字后的菜单
UIMenuItem *menuItem = [[[UIMenuItem
alloc] initWithTitle:@"分享到新浪微博"
action:@selector(changeColor)]
autorelease];
UIMenuController *menu = [UIMenuController
sharedMenuController];
[menu setMenuItems:[NSArray
arrayWithObject:menuItem]];
//初始化并定义大小
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.layer
setCornerRadius: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 ([text
isEqualToString:@"\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 = [[[UIToolbar
alloc] initWithFrame:CGRectMake(0,
0, 320,
30)] autorelease];
//设置UIToolbar样式
[topView setBarStyle:UIBarStyleBlack];
//创建并初始化UIToolbar上面的按钮
UIBarButtonItem *helloButton = [[[UIBarButtonItem
alloc] initWithTitle:@"Hello"
style:UIBarButtonItemStylePlain
target:self
action:nil]
autorelease];
UIBarButtonItem *btnSpace = [[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];
UIBarButtonItem *doneButton = [[[UIBarButtonItem
alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(dismissKeyBoard)]
autorelease];
//组成按钮数组
NSArray *buttonsArray = [NSArray
arrayWithObjects:helloButton,btnSpace,doneButton,nil];
//设置数组到UIToolbar中
[topView setItems:buttonsArray];
//加到键盘上
//在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是UIToolBar,用于回收键盘。
[_textView
setInputAccessoryView:topView];
- (void)dismissKeyBoard
{
[_textView
resignFirstResponder];
}
4.
// 自定义选择文字后的菜单
UIMenuItem *menuItem = [[[UIMenuItem
alloc] initWithTitle:@"分享到新浪微博"
action:@selector(changeColor)]
autorelease];
UIMenuController *menu = [UIMenuController
sharedMenuController];
[menu setMenuItems:[NSArray
arrayWithObject:menuItem]];
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Android的TextView与Html相结合的具体方法
- Android中实现为TextView添加多个可点击的文本
- android textview 显示html方法解析
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- Android实现TextView中文字链接的4种方式介绍及代码
- android TextView属性的详细介绍 分享
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略