UITextView的使用

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

    //加到键盘上

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值