iOS自定义发送消息输入框

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

简单的封装了一个,免得麻烦直接初始化就可以用了 ,有其他需求该里面参数就行了

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

效果图:

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航