- 论坛徽章:
- 0
|
简单的封装了一个,免得麻烦直接初始化就可以用了 ,有其他需求该里面参数就行了
WJEasyInputTextView.h- //
- // WJEasyInputTextView.h
- // 键盘上的输入框
- //
- // Created by apple on 15/6/23.
- // Copyright (c) 2015年 tqh. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- /**
- * 使用 直接初始化,也可以改属性
- WJEasyInputTextView *wj = [[WJEasyInputTextView alloc]init];
- wj.bgColor = [UIColor orangeColor];
- wj.showLimitNum = YES;
- wj.font = [UIFont systemFontOfSize:18];
- wj.limitNum = 13;
- [self.view addSubview:wj];
- */
- @interface WJEasyInputTextView : UIView
- @property (nonatomic,strong)UIColor *bgColor; //背景色
- @property (nonatomic,assign)BOOL showLimitNum; //显示字数
- @property (nonatomic,assign)NSInteger limitNum; //限制字数
- @property (nonatomic,strong)UIFont *font; //文字大小
- @end
复制代码 WJEasyInputTextView.m- //
- // WJEasyInputTextView.m
- // 键盘上的输入框
- //
- // Created by apple on 15/6/23.
- // Copyright (c) 2015年 tqh. All rights reserved.
- //
- #import "WJEasyInputTextView.h"
- @interface WJEasyInputTextView ()<UITextViewDelegate> {
- UIView *_bottomView;//评论框
- UITextView *_textView;//输入框
- UILabel *_textApl;//字数
- CGRect _rect;
- }
- @end
- @implementation WJEasyInputTextView
- - (instancetype)init
- {
- self = [super init];
- if (self) {
- self.frame = CGRectMake(0, CGRectGetHeight([UIScreen mainScreen].bounds)-50, CGRectGetWidth([UIScreen mainScreen].bounds), 50);
- _rect = self.frame;
- [self initNotification];
- [self AddtextFieldComments];
- }
- return self;
- }
- #pragma mark - 初始化键盘监听
- - (void)initNotification {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
- }
- #pragma mark - 初始化视图
- - (void)AddtextFieldComments {
- _bottomView = [[UIView alloc] initWithFrame:self.bounds];
- _bottomView.backgroundColor = self.bgColor;
- _bottomView.userInteractionEnabled= YES;
- [self addSubview:_bottomView];
-
- UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), 0.5)];
- lineView.backgroundColor = [UIColor colorWithWhite:0.6 alpha:0.3];
- [_bottomView addSubview:lineView];
-
- _textView = [[UITextView alloc] initWithFrame:CGRectMake(15, 5, CGRectGetWidth(self.bounds) - 115, 40)];
- _textView.layer.cornerRadius = 6;
- _textView.layer.borderWidth = 1;
- _textView.delegate = self;
- _textView.font = [UIFont systemFontOfSize:13];
- _textView.autocapitalizationType = UITextAutocapitalizationTypeNone;
- _textView.autocorrectionType = UITextAutocorrectionTypeNo;
- _textView.layer.borderColor = lineView.backgroundColor.CGColor;
- [_bottomView addSubview:_textView];
-
- _textApl = [[UILabel alloc] init];
- _textApl.frame = CGRectMake(CGRectGetMaxX(_textView.frame)-37, 35, 30, 6);
- _textApl.textColor = [UIColor grayColor];
- _textApl.textAlignment = NSTextAlignmentRight;
- _textApl.font = [UIFont systemFontOfSize:8];
- // _textApl.text = @"140";
- [_bottomView addSubview:_textApl];
-
- UIButton *plBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- plBtn.layer.borderWidth = 1;
- plBtn.backgroundColor = [UIColor whiteColor];
- [plBtn setTitle:@"发送" forState:UIControlStateNormal];
- [plBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
- plBtn.layer.cornerRadius = 6;
- plBtn.layer.borderColor = lineView.backgroundColor.CGColor;
- plBtn.frame = CGRectMake(CGRectGetMaxX(_textView.frame) + 10, CGRectGetMinY(_textView.frame), 80, CGRectGetHeight(_textView.frame));
- [plBtn addTarget:self action:@selector(pinglun) forControlEvents:UIControlEventTouchUpInside];
- [_bottomView addSubview:plBtn];
- }
- #pragma mark - get方法
- - (void)setBgColor:(UIColor *)bgColor {
- _bgColor = bgColor;
- _bottomView.backgroundColor = bgColor;
- }
- - (void)setLimitNum:(NSInteger)limitNum {
- NSLog(@"%ld",limitNum);
- _limitNum = limitNum;
- _textApl.text = [NSString stringWithFormat:@"%ld",limitNum];
- }
- - (void)setShowLimitNum:(BOOL)showLimitNum {
- _showLimitNum = showLimitNum;
- if (showLimitNum) {
- _textApl.hidden = NO;
- }else {
- _textApl.hidden = YES;
- }
- }
- - (void)setFont:(UIFont *)font {
- _font = font;
- _textView.font = font;
- }
- #pragma mark - 事件监听
- - (void)pinglun
- {
- NSLog(@"发送");
- }
- - (void)textViewDidChange:(UITextView *)textView {
- if (_showLimitNum) {
- NSString *toBeString = textView.text;
- NSArray *currentar = [UITextInputMode activeInputModes];
- UITextInputMode *current = [currentar firstObject];
-
- //下面的方法是iOS7被废弃的,注释
- // NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式
-
- if ([current.primaryLanguage isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写
- UITextRange *selectedRange = [textView markedTextRange];
- //获取高亮部分
- UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];
- // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
- if (!position) {
- if (toBeString.length > _limitNum) {
- textView.text = [toBeString substringToIndex:_limitNum];
- }
- }
- // 有高亮选择的字符串,则暂不对文字进行统计和限制
- else{
-
- }
- }
- // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
- else{
- if (toBeString.length > _limitNum) {
- textView.text = [toBeString substringToIndex:_limitNum];
- }
- }
- NSLog(@"%@",textView.text);
- }else {
-
- }
- }
- #pragma mark - 键盘监听
- - (void)keyboardWillShow:(NSNotification *)notification
- {
- //得到键盘高度
- NSDictionary *userInfo = [notification userInfo];
- NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
- CGRect keyboardRect = [aValue CGRectValue];
- // - 49
- self.frame = CGRectMake(0, CGRectGetHeight([UIScreen mainScreen].bounds) - keyboardRect.size.height - 50, CGRectGetWidth(_bottomView.frame), CGRectGetHeight(_bottomView.frame));
-
- }
- - (void)keyboardWillHide:(NSNotification *)notification
- {
- //-49
- self.frame = _rect;
- }
- @end
复制代码 效果图:
|
|