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

    //加到键盘上

    //在使用UITextViewUITextField的时候,可以通过它们的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]];

 

 

0 0
原创粉丝点击