iOS经典讲解之妙用UITextView

// 添加textView
- (void)addTextView
{
    //UITextView可以使用父类的初始化方法initWithFrame:也可使用iOS7.0出现的自己独有的的初始化方法initWithFrame:textContainer:
    //textContainer:是text接受者 可以为nil
    // 讲解如果使用initWithFrame:textContainer:初始化方法需要注意的问题
    // 这里先讲解三种类的关系:
    //1、NSTextStorage保存并管理UITextView显示的文字信息,并且可以灵活的修改文字属性
    //2、NSLayoutManager用于管理NSTextStorage中文字内容的排版布局
    //3、NSTextContainer定义一个矩形区域用于存放已经进行了排版并设置好属性的文字
    
    // 使三者建立联系:必须建立三者联系,否则用该初始化方法文字不显示
    //创建container
    NSTextContainer *container = [[NSTextContainer alloc] initWithSize:CGSizeMake(100, 100)];
    container.widthTracksTextView = YES;
    //创建layoutManager并添加container
    NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
    [layoutManager addTextContainer:container];
    //创建storage并添加layoutManager
    NSTextStorage *storage = [[NSTextStorage alloc] init];
    [storage addLayoutManager:layoutManager];
    
    /**
     来向UITextStorage类或其子类发送开始或完成文字编辑的消息。在[storage beginEditing], [storage endEditing];两条语句之间进行相应的文字编辑设计文字的样式   
     [storage beginEditing];
     NSDictionary *attrsDic = @{NSTextEffectAttributeName: NSTextEffectLetterpressStyle};
     UIKIT_EXTERN NSString *const NSTextEffectAttributeName NS_AVAILABLE_IOS(7_0);          // NSString, default nil: no text effect
     NSMutableAttributedString *mutableAttrString = [[NSMutableAttributedString alloc] initWithString:@"Letterpress" attributes:attrsDic];
     NSAttributedString *appendAttrString = [[NSAttributedString alloc] initWithString:@" Append:Letterpress"];
     [mutableAttrString appendAttributedString:appendAttrString];
     [storage setAttributedString:mutableAttrString];
     [storage endEditing];

     */
    
    // 最后在初始化方法中添加container
    //UITextView继承于UIScrollView继承父类的所有属性和方法,这里只介绍经常使用的方法和属性支持多行输入
    UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 200, 100) textContainer:container];
    // 设置背景颜色
    textView.backgroundColor = [UIColor whiteColor];
    // 设置字体颜色
    textView.textColor = [UIColor blackColor];
    // 设置字体和大小
    textView.font = [UIFont fontWithName:@"Heiti TC" size:16];
    // 设置内容
    textView.text = @"输入内容";
    // 设置弹出键盘类型
    textView.keyboardType = UIKeyboardTypeDefault;
    //设置键盘返回键的样式
    textView.returnKeyType = UIReturnKeyNext;
    // 设置是否允许滑动
    textView.scrollEnabled = NO;
    // 是否显示滑动条
    textView.showsVerticalScrollIndicator = YES;
    // 设置代理 遵循代理 UITextViewDelegate
    textView.delegate = self;
    [self.view addSubview:textView];
}

#pragma mark ---代理方法---

-(void)textViewDidBeginEditing:(UITextView *)textView
{
    NSLog(@"开始编辑触发");
}

- (void)textViewDidEndEditing:(UITextView *)textView
{
    NSLog(@"结束编辑触发");
}

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    NSLog(@"将要编辑触发");
    return YES;
}

-(BOOL)textViewShouldEndEditing:(UITextView *)textView
{
    NSLog(@"将要结束编辑触发");
    return YES;
}
// 在编辑范围是否允许输入某些text
// 如果你的textView里面不允许用回车,可以用此方法通过按回车回收键盘
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
       if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    } else {
        return YES;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值