123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- //
- // JXRedInputView.m
- // shiku_im
- //
- // Created by 1 on 17/8/15.
- // Copyright © 2017年 Reese. All rights reserved.
- //
- #import "JXRedInputView.h"
- #define RowHeight 48
- #define RowMaxHeight 60
- #define RowMargin 10
- #define RowMaxMargin 15
- @interface JXRedInputView () <UITextFieldDelegate> {
- CGFloat _greetY;
- CGFloat _countY;
- CGFloat _moneyY;
- CGFloat _sendY;
- }
- @end
- @implementation JXRedInputView
- -(instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type isRoom:(BOOL)isRoom delegate:(id)delegate{
- if (self = [super initWithFrame:frame]) {
- self.frame = frame;
- self.type = type;
- self.delegate = delegate;
- self.isRoom = isRoom;
-
- [self customSubViews];
- }
- return self;
- }
- -(instancetype)init{
- if (self = [super init]) {
- [self customSubViews];
- }
- return self;
- }
- -(instancetype)initWithFrame:(CGRect)frame{
- if (self = [super initWithFrame:frame]) {
- [self customSubViews];
- }
- return self;
- }
- -(void)layoutSubviews{
- if (_type == 3) {
- _greetY = RowMargin;
- if(_isRoom){
- _countY = RowMargin + RowHeight+ 43;
- _moneyY = _countY + RowHeight;
- _sendY = RowHeight*3+RowMaxHeight+RowMargin+90;
- }else{
- _moneyY = RowMargin + RowHeight+43;
- _sendY = RowHeight+RowMaxHeight+RowMargin+RowMaxHeight+60;
- }
- }else{
- if(_isRoom){
- _countY = RowMargin;
- _moneyY = _countY + RowHeight;
- _greetY = _moneyY + RowHeight + 43;
- _sendY = RowHeight*2+RowMaxHeight+RowMargin+RowMaxHeight+90;
- }else{
- _moneyY = RowMargin;
- _greetY = _moneyY +RowMargin*2 + RowHeight;
- _sendY = RowHeight+RowMaxHeight+RowMargin+RowMaxHeight+60;
- if (_type == 1) {
- _greetY = _moneyY + RowHeight + RowMaxMargin;
- _sendY = RowHeight+RowMaxHeight+RowMargin+RowMaxHeight+50;
- }
- }
- }
-
- if(_isRoom){
- _countView.frame = CGRectMake(0, _countY, self.frame.size.width, RowHeight);
- _countUnit.frame = CGRectMake(CGRectGetWidth(_countView.frame)-40, 0, 40, RowHeight);
- _countTextField.frame = CGRectMake(CGRectGetMaxX(_countTitle.frame), 0, CGRectGetMinX(_countUnit.frame)-CGRectGetMaxX(_countTitle.frame), RowHeight);
-
- _line.frame = CGRectMake(15, RowHeight-LINE_WH, JX_SCREEN_WIDTH-15, LINE_WH);
- }
- _moneyView.frame = CGRectMake(0, _moneyY, self.frame.size.width, RowHeight);
- _moneyUnit.frame = CGRectMake(CGRectGetWidth(_moneyView.frame)-40, 0, 40, RowHeight);
- _moneyTextField.frame = CGRectMake(CGRectGetMaxX(_moneyTitle.frame), 0, CGRectGetMinX(_moneyUnit.frame)-CGRectGetMaxX(_moneyTitle.frame), RowHeight);
- _greetView.frame = CGRectMake(0, _greetY, self.frame.size.width, _type == 1 || (_type == 2 && _isRoom) ? RowMaxHeight : RowHeight);
-
- _sendButton.frame = CGRectMake(15, _sendY, self.frame.size.width-15*2, 43);
- _sendButton.tag = _type;
-
- _allMoneyLab.frame = CGRectMake(0, CGRectGetMinY(_sendButton.frame)-22 - 26, JX_SCREEN_WIDTH, 22);
-
- if (_type == 3) {
- _greetTitle.hidden = NO;
- _greetTextField.frame = CGRectMake(CGRectGetMaxX(_greetTitle.frame), 0, CGRectGetWidth(_greetView.frame)-CGRectGetWidth(_greetTitle.frame)-15, RowHeight);
- _noticeTitle.frame = CGRectMake(15, CGRectGetMaxY(_greetView.frame)+12, JX_SCREEN_WIDTH-15, 13);
- }else{
- _greetTitle.hidden = YES;
- _noticeTitle.frame = CGRectMake(15, CGRectGetMaxY(_moneyView.frame)+12, JX_SCREEN_WIDTH-15, 13);
- _greetTextField.frame = CGRectMake(0, 0, CGRectGetWidth(_greetView.frame), _type == 1 || (_type == 2 && _isRoom) ? RowMaxHeight : RowHeight);
- }
-
-
-
- [self viewLocalized];
- }
- -(void)viewLocalized{
- _countTitle.text = Localized(@"JXRed_numberPackets");// @"红包个数";//
- _moneyTitle.text = Localized(@"JXRed_totalAmount");//@"总金额";//
- _countUnit.text = Localized(@"JXRed_A");//@"个";//
- _moneyUnit.text = Localized(@"JX_ChinaMoney");//@"元";//
- [_sendButton setTitle:Localized(@"JXRed_send") forState:UIControlStateNormal];//@"塞钱进红包"
- [_sendButton setTitle:Localized(@"JXRed_send") forState:UIControlStateHighlighted];
-
- _moneyTextField.placeholder = Localized(@"JXRed_inputAmount");//@"输入金额";//
- _countTextField.placeholder = Localized(@"JXRed_inputNumPackets");//@"请输入红包个数";//
-
- switch (_type) {
- case 1:{
- if (_isRoom) {
- _noticeTitle.text = Localized(@"JXRed_sameAmount");//@"小伙伴领取的金额相同";//
- }
- _greetTextField.placeholder = Localized(@"JXRed_greetOlace");//@"恭喜发财,万事如意";// Congratulation, everything goes well
-
-
- break;
- }
- case 2:{
- _noticeTitle.text = Localized(@"JXRed_ARandomAmount");//@"小伙伴领取的金额随机";//
- _greetTextField.placeholder = Localized(@"JXRed_greetOlace");//@"恭喜发财,万事如意";
-
- break;
- }
- case 3:{
- _noticeTitle.text = Localized(@"JXRed_NoticeOrder");//@"小伙伴需回复口令抢红包";//
- _greetTextField.placeholder = Localized(@"JXRed_orderPlace");//@"如“我真帅”";// eg."I'm so handsome";
- _greetTitle.text = Localized(@"JXRed_setOrder");//@"设置口令";//
- break;
- }
- default:
- break;
- }
- }
- -(void)customSubViews{
- if(_isRoom)
- [self addSubview:self.countView];
- [self addSubview:self.moneyView];
- [self addSubview:self.greetView];
-
- [self addSubview:self.sendButton];
- [self addSubview:self.noticeTitle];
- [self addSubview:self.allMoneyLab];
- }
- - (void)textFieldDidChange:(UITextField *)textField {
- _allMoneyLab.text = [NSString stringWithFormat:@"¥%.2f",[textField.text doubleValue]];
- _sendButton.enabled = [_moneyTextField.text doubleValue] > 0;
- }
- - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
- NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
- if (textField == _countTextField) {
- if ([textField.text rangeOfString:@"."].location != NSNotFound) {
- return NO;
- }
- }
- if (textField == _moneyTextField) {
- if ([toBeString doubleValue] > 500) {
- return NO;
- }
- // 首位不能输入 .
- if (IsStringNull(textField.text) && [string isEqualToString:@"."]) {
- return NO;
- }
- //限制.后面最多有两位,且不能再输入.
- if ([textField.text rangeOfString:@"."].location != NSNotFound) {
- //有.了 且.后面输入了两位 停止输入
- if (toBeString.length > [toBeString rangeOfString:@"."].location+3) {
- return NO;
- }
- //有.了,不允许再输入.
- if ([string isEqualToString:@"."]) {
- return NO;
- }
- }
- //限制首位0,后面只能输入. 和 删除
- if ([textField.text isEqualToString:@"0"]) {
- if (![string isEqualToString:@"."] && ![string isEqualToString:@""]) {
- return NO;
- }
- }
- //限制只能输入:1234567890.
- NSCharacterSet * characterSet = [[NSCharacterSet characterSetWithCharactersInString:@"1234567890."] invertedSet];
- NSString * filtered = [[string componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
- return [string isEqualToString:filtered];
- }
-
- return YES;
- }
- - (UILabel *)allMoneyLab {
- if (!_allMoneyLab) {
- _allMoneyLab = [[UILabel alloc] init];
- _allMoneyLab.font = SYSFONT(22);
- _allMoneyLab.text = @"¥0.00";
- _allMoneyLab.textAlignment = NSTextAlignmentCenter;
- }
- return _allMoneyLab;
- }
- -(UIView *)countView{
- if (!_countView) {
- _countView = [[UIView alloc] init];
- _countView.backgroundColor = [UIColor whiteColor];
- [_countView addSubview:self.countTitle];
- [_countView addSubview:self.countTextField];
- [_countView addSubview:self.countUnit];
- [_countView addSubview:self.line];
- }
- return _countView;
- }
- -(UIView *)moneyView{
- if (!_moneyView) {
- _moneyView = [[UIView alloc] init];
- _moneyView.backgroundColor = [UIColor whiteColor];
- [_moneyView addSubview:self.moneyTitle];
- [_moneyView addSubview:self.moneyTextField];
- [_moneyView addSubview:self.moneyUnit];
- }
- return _moneyView;
- }
- -(UIView *)greetView{
- if (!_greetView) {
- _greetView = [[UIView alloc] init];
- _greetView.backgroundColor = [UIColor whiteColor];
- [_greetView addSubview:self.greetTitle];
- [_greetView addSubview:self.greetTextField];
- }
- return _greetView;
- }
- -(UIButton *)sendButton{
- if (!_sendButton) {
- _sendButton = [UIButton buttonWithType:UIButtonTypeCustom];
- [_sendButton setBackgroundImage:[UIImage createImageWithColor:HEXCOLOR(0xFA585E)] forState:UIControlStateNormal];
- [_sendButton setBackgroundImage:[UIImage createImageWithColor:[HEXCOLOR(0xFA585E) colorWithAlphaComponent:0.5]] forState:UIControlStateDisabled];
- [_sendButton.titleLabel setFont:g_factory.font16];
- _sendButton.enabled = NO;
- _sendButton.layer.masksToBounds = YES;
- _sendButton.layer.cornerRadius = 7.f;
-
- }
- return _sendButton;
- }
- -(UILabel *)noticeTitle{
- if (!_noticeTitle) {
- _noticeTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, -20, 200, 20)];
- _noticeTitle.font = g_factory.font13;
- _noticeTitle.textColor = [UIColor lightGrayColor];
- }
- return _noticeTitle;
- }
- -(UILabel *)countTitle{
- if (!_countTitle) {
- _countTitle = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 80, RowHeight)];
- _countTitle.font = g_factory.font15;
- _countTitle.textColor = [UIColor blackColor];
- // _countTitle.text = @"红包个数";
- }
- return _countTitle;
- }
- -(UILabel *)moneyTitle{
- if (!_moneyTitle) {
- _moneyTitle = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 80, RowHeight)];
- _moneyTitle.font = g_factory.font15;
- _moneyTitle.textColor = [UIColor blackColor];
- // _moneyTitle.text = @"总金额";
- }
- return _moneyTitle;
- }
- -(UILabel *)greetTitle{
- if (!_greetTitle) {
- _greetTitle = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 80, RowHeight)];
- _greetTitle.font = g_factory.font15;
- _greetTitle.textColor = [UIColor blackColor];
- }
- return _greetTitle;
- }
- -(UITextField *)countTextField{
- if (!_countTextField) {
- _countTextField = [UIFactory createTextFieldWith:CGRectZero delegate:_delegate returnKeyType:UIReturnKeyNext secureTextEntry:NO placeholder:nil font:g_factory.font15];
- _countTextField.text = @""; // 红包默认最少为1个
- _countTextField.clearButtonMode = UITextFieldViewModeNever;
- _countTextField.textAlignment = NSTextAlignmentRight;
- _countTextField.borderStyle = UITextBorderStyleNone;
- _countTextField.keyboardType = UIKeyboardTypeNumberPad;
- }
- return _countTextField;
- }
- -(UITextField *)moneyTextField{
- if (!_moneyTextField) {
- _moneyTextField = [UIFactory createTextFieldWith:CGRectZero delegate:self returnKeyType:UIReturnKeyNext secureTextEntry:NO placeholder:nil font:g_factory.font15];
- _moneyTextField.clearButtonMode = UITextFieldViewModeNever;
- _moneyTextField.textAlignment = NSTextAlignmentRight;
- _moneyTextField.borderStyle = UITextBorderStyleNone;
- _moneyTextField.keyboardType = UIKeyboardTypeDecimalPad;
- [_moneyTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- }
- return _moneyTextField;
- }
- -(UITextField *)greetTextField{
- if (!_greetTextField) {
- _greetTextField = [UIFactory createTextFieldWith:CGRectZero delegate:_delegate returnKeyType:UIReturnKeyNext secureTextEntry:NO placeholder:nil font:g_factory.font15];
- _greetTextField.textAlignment = NSTextAlignmentLeft;
- _greetTextField.borderStyle = UITextBorderStyleNone;
- _greetTextField.keyboardType = UIKeyboardTypeDefault;
-
- UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 15, 15)];
- _greetTextField.leftView = view;
- _greetTextField.leftViewMode = UITextFieldViewModeAlways;
- }
- return _greetTextField;
- }
- -(UILabel *)countUnit{
- if (!_countUnit) {
- _countUnit = [[UILabel alloc] initWithFrame:CGRectZero];
- _countUnit.font = g_factory.font15;
- _countUnit.textColor = [UIColor blackColor];
- _countUnit.textAlignment = NSTextAlignmentCenter;
- // _countUnit.text = @"个";
- }
- return _countUnit;
- }
- -(UILabel *)moneyUnit{
- if (!_moneyUnit) {
- _moneyUnit = [[UILabel alloc] initWithFrame:CGRectZero];
- _moneyUnit.font = g_factory.font15;
- _moneyUnit.textColor = [UIColor blackColor];
- _moneyUnit.textAlignment = NSTextAlignmentCenter;
- // _moneyUnit.text = @"元";
- }
- return _moneyUnit;
- }
- - (UIView *)line {
- if (!_line) {
- _line = [[UIView alloc] init];
- _line.backgroundColor = THE_LINE_COLOR;
- }
- return _line;
- }
- -(void)stopEdit{
- [_countTextField resignFirstResponder];
- [_moneyTextField resignFirstResponder];
- [_greetTextField resignFirstResponder];
- }
- @end
|