ios基础控件之UITextView

简介: 多行文本控件UITextView继承UIScrollView:UIView控件,默认是带有滚动条的。UITextView和UITextField都是文本编辑、显示控件,它们功能和行为在很多方面都是相似的。
   多行文本控件UITextView继承UIScrollView:UIView控件,默认是带有滚动条的。UITextView和UITextField都是文本编辑、显示控件,它们功能和行为在很多方面都是相似的。
UITextView与UITextField的区别主要在以下三点:
   UITextView是一个多行文本框,而UITextField只是单行文本框。
   UITextView没有继承UIControl控件,因此不能绑定IBAction事件处理         方法;也不能调用UIControl提供的addTarget:action:forControlEvents:方法来绑定事件处理的方法。
   UITextView继承了UIScrollView,因此具有UIScrollView的功能和行为。

textView=[[UITextView alloc]initWithFrame:CGRectMake(100, 100, 300, 300)];//初始化尺寸
self.textView.textColor=[UIColor blackColor];//字体颜色
self.textView.font=[UIFont fontWithName:@”Arial” size:18.0];//字体类型和大小
[textView.layer setCornerRadius:50];//设置圆角
self.textView.delegate=self;//设置它的委托方法
textView.layer.borderWidth=5;//设置边框
self.textView.backgroundColor=[UIColor redColor];//背景颜色
self.textView.text=@”“;//显示内容
self.textView.returnKeyType=UIReturnKeyDefault;//返回键的类型
self.textView.keyboardType=UIKeyboardTypeDefault;//键盘类型
self.textView.scrollEnabled=YES;//是否可以拖动
self.textView.autocapitalizationType=UIViewAutoresizingFlexibleHeight;//自适应高度
[self.view addSubview:self.textView];
关闭键盘可以通过以下几种方法:
倘若有导航栏的话,在导航栏上添加退出按钮:
-(void)textViewDidBeginEditing:(UITextView *)textView
{
UIBarButtonItem *done=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leaveEditMode)];
self.navigationItem.rightBarButtonItem=done;
}
-(void)textViewDidEndEditing:(UITextView *)textView
{
self.navigationItem.rightBarButtonItem=nil;
}
-(void)leaveEditMode
{
[self.textView resignFirstResponder];
}

在键盘上边添加一个退出按钮:
UIToolbar *topView=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
[topView setBarStyle:UIBarStyleBlack];
UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@”Done” style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];

-(IBAction)dismissKeyBoard
{
[textView resignFirstResponder];
}
还可以修改键盘上ruturn按钮的功能:
-(BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text
{
if ([text isEqualToString:@”\n”]) {
[textView resignFirstResponder];
return NO;
}
return YES;

}

有些时候我们选取UITextView上一部分文字想转发,复制或者拷贝。可以在选取栏中增加按钮:
UIMenuItem *menuItem=[[UIMenuItem alloc]initWithTitle:@”转发” action:@selector(changeColor)];
UIMenuController *menu=[UIMenuController sharedMenuController];
[menu setMenuItems:[NSArray arrayWithObject:menuItem]];
-(void)changeColor
{
//实现转发,复制或者拷贝具体功能的代码
}
在日常软件中我们很多地方都需要为UITextView根据需求扩展它的长度。
下面有三种实现的方法:
-(void)textViewDidChange:(UITextView *)textView
{
if(textView.text.length > 20)//一行最多多少字节
{
一、
// UIFont *font = [UIFont systemFontOfSize:15];
// CGSize size = [textView.text sizeWithFont:font constrainedToSize:CGSizeMake(300, 1000) lineBreakMode:UILineBreakModeCharacterWrap];
// //BgImage.frame = CGRectMake(0, 202-size.height+15, 320, size.height+28);
// [textView setFrame:CGRectMake(0, 1, 320, size.height+10)];

**二、**    

// CGRect frame = textView.frame;
// CGSize size = [textView.text sizeWithFont:textView.font
// constrainedToSize:CGSizeMake(280, 1000)
// lineBreakMode:UILineBreakModeTailTruncation];
// frame.size.height = size.height > 1 ? size.height + 20 : 64;
// textView.frame = frame;

三、
CGRect frame = textView.frame;
frame.size.height = textView.contentSize.height;
textView.frame = frame;

}

相关文章
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
71 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
106 0
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
484 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
160 0
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
150 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
372 0
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
209 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
182 0
|
存储 前端开发 程序员
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
在iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。
438 0
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
|
数据可视化 程序员 iOS开发
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
279 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法