UITextView控件的详细讲解

来源:互联网 发布:云计算运维好找工作吗 编辑:程序博客网 时间:2024/05/01 14:42



.m文件中初始化textView并写入代如下


_textView = [[UITextView alloc]initWithFrame:CGRectMake(10,100,300,150)];//初始化

_textView.textColor = [UIColor orangeColor];//设置textView里面的字体颜色

_textView.backgroundColor = [UIColor yellowColor];//设置背景色

_textView.delegate =self;//设置委托

_textView.returnKeyType =UIReturnKeyDone;//返回键的类型

_textView.keyboardType =UIKeyboardTypeDefault;//键盘类型

_textView.scrollEnabled =YES;//是否可以拖动

_textView.autoresizingMask =UIViewAutoresizingFlexibleHeight;//自适应高度

_textView.font = [UIFont fontWithName:@"Arial" size:33];//设置字体名字和字体大小


2UITextView回收键盘的几种方式


如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate

代码如下

//回收方法1

-(void)textViewDidBeginEditing:(UITextView *)textView

{

   UIBarButtonItem *done = [[[UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemDonetarget:selfaction:@selector(leaveEditMode)] autorelease];

   self.navigationItem.rightBarButtonItem = done;

    

}


-(void)leaveEditMode

{

    [self._textView resignFirstResponder];

}


-(void)textViewDidEndEditing:(UITextView *)textView

{

   self.navigationItem.rightBarButtonItem =nil;

}


b如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。

代码如下:

//回收方法2 如果textView里不用回车键,可以把回车键当做退出键盘的响应键。

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

{

   if ([textisEqualToString:@"\n"])

    {

        [textView resignFirstResponder];

       returnNO;

    }

   returnYES;

}


c还有你也可以自定义其他加载键盘上面用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。

代码如下

 

UIToolbar * topView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];   

 

    [topView setBarStyle:UIBarStyleBlack];   

 

    UIBarButtonItem * helloButton = [[UIBarButtonItem alloc]initWithTitle:@"Hello" style:UIBarButtonItemStyleBordered target:self action:nil];         

 

    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 = [NSArray arrayWithObjects:helloButton,btnSpace,doneButton,nil];   

 

    [doneButton release];   

 

    [btnSpace release];   

 

    [helloButton release];   

 

    [topView setItems:buttonsArray];   

 

    [tvTextView setInputAccessoryView:topView];   

 

-(IBAction)dismissKeyBoard   

 

{   

 

    [tvTextView  resignFirstResponder];   

 

}   


3、设置UITextView圆角问题


先引入#import<QuartzCore/QuartzCore.h>


_textView.layer.cornerRadius8;//给图层的边框设置为圆角

_textView.layer.masksToBounds =YES;


4UITextView自定义选择文字后的菜单


- (void)viewDidLoad

{

    [superviewDidLoad];

   self._textView = [[UITextView alloc]initWithFrame:CGRectMake(10,100,300,200)];//初始化

   _textView.font = [UIFont fontWithName:@"Arial"size:33];//设置字体名字和字体大小

    [self.viewaddSubview:_textView];

    

   UIMenuItem *menuItem = [[UIMenuItem allocinitWithTitle:@"分享到新浪微博" action:@selector(changeColor)]; 

   UIMenuController *menu = [UIMenuController sharedMenuController]; 

    [menu setMenuItems:[NSArray arrayWithObject:menuItem]]; 

    [menuItem release]; 

    

}


-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 

   if(action == @selector(changeColor) || action ==@selector(copy:)) 

    { 

       if(_textView.selectedRange.length>0

           returnYES

    } 

   returnNO


-(void)changeColor

{

   NSLog(@"%@",[_textView.textsubstringWithRange:_textView.selectedRange]);

}

实现后如下图:



5、给TextView加一个有色边框,并设置背景图片

//给图层添加一个有色边框

 _textView.layer.borderWidth =5;

 _textView.layer.borderColor = [[UIColor colorWithRed:0.52green:0.09blue:0.07alpha:0.5]CGColor];

 _textView.layer.contents = (id)[UIImage imageNamed:@"31"].CGImage;//给图层添加背景图片


6、获得行数

CGSize size = [_textView text] sizeWithFont:[_textView font]];

//取出文字的高度

int length = size.height;

//计算行数

int colomNumber = _textView.contentSize.height/length;

原创粉丝点击