码迷,mamicode.com
首页 > 微信 > 详细

UITextView仿微信输入

时间:2017-02-27 13:31:21      阅读:405      评论:0      收藏:0      [点我收藏+]

标签:mic   pre   1.5   res   scroll   load   center   tin   containe   

UITextView仿微信输入

输入和删除文字的时候不会出现抖动,也不会出现一行文字显示一半的情况,代码中部分数据用的是死数据,用的时候要灵活运用,适当调整一下!

#define textFont [UIFont systemFontOfSize:16]

#import "ViewController.h"

@interface ViewController ()<UITextViewDelegate>

@property (nonatomic, weak) UITextView *textView;

@property (nonatomic, assign, getter=isMark) BOOL mark;

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    UITextView *textView=[[UITextView alloc]initWithFrame:CGRectMake(100, 200, 214, 30)];

    _textView=textView;

    _textView.font=textFont;

    //不然设置的行间距不起作用

    _textView.text=@" ";

    //设置控件文字的上下距离

    _textView.textContainerInset=UIEdgeInsetsMake(5, 0, 5, 0);

    

    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

    

    paragraphStyle.lineSpacing = 5;// 字体的行间距

    

    NSDictionary *attributes = @{

                                 NSFontAttributeName:textFont,

                                 NSParagraphStyleAttributeName:paragraphStyle

                                 };

    

    textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];

    

    _textView.delegate=self;

    

    textView.backgroundColor=[UIColor redColor];

    

    [self.view addSubview:textView];

    

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewTextDidChange:) name:UITextViewTextDidChangeNotification object:textView];

}

 

/**

 *  设置输入超过三行(高度78)自动滚入不可见区域

 *

 *  @param notification <#notification description#>

 */

- (void)textViewTextDidChange:(NSNotification *)notification{

    

    if([_textView.text hasPrefix:@" "]){

        _textView.text=[_textView.text stringByReplacingOccurrencesOfString:@" " withString:@""];

    }

    

    CGFloat height = _textView.contentSize.height>78?78:_textView.contentSize.height;

    

    _textView.frame=CGRectMake(100, CGRectGetMaxY(_textView.frame)-height, _textView.frame.size.width, height);

    

    return;

}

 

 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

    _mark=YES;

}

 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    _mark=NO;

 

}

 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

    /**

     *  判断是否拖动来设置frame

     */

    if(!self.isMark){

        NSLog(@"%lf",_textView.contentSize.height);

        if(_textView.contentSize.height>78){

            [_textView setContentOffset:CGPointMake(0, _textView.contentSize.height-78)];

        }else{

            [_textView setContentOffset:CGPointMake(0, 0)];

        }

    }

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

UITextView仿微信输入

标签:mic   pre   1.5   res   scroll   load   center   tin   containe   

原文地址:http://www.cnblogs.com/tianmiao/p/6473090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!