From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/screendisplay/Classes/Base/BaseControllers/LMJTextViewController.m |  245 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 245 insertions(+), 0 deletions(-)

diff --git a/screendisplay/screendisplay/Classes/Base/BaseControllers/LMJTextViewController.m b/screendisplay/screendisplay/Classes/Base/BaseControllers/LMJTextViewController.m
new file mode 100755
index 0000000..bcbe3e6
--- /dev/null
+++ b/screendisplay/screendisplay/Classes/Base/BaseControllers/LMJTextViewController.m
@@ -0,0 +1,245 @@
+//
+//  LMJTextViewController.m
+//  PLMMPRJK
+//
+//  Created by windshan on 2017/4/26.
+//  Copyright �� 2017��� GoMePrjk. All rights reserved.
+//
+
+#import "LMJTextViewController.h"
+#import "IQUIView+Hierarchy.h"
+#import "IQKeyboardManager.h"
+#import "IQKeyboardReturnKeyHandler.h"
+
+@interface LMJTextViewController ()
+/** <#digest#> */
+@property (nonatomic, strong) NSArray<UITextField *> *requiredTextFields;
+
+/** <#digest#> */
+@property (nonatomic, strong) IQKeyboardReturnKeyHandler *returnKeyHandler;
+
+@end
+
+@implementation LMJTextViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+}
+
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    [self initKeyboard];
+}
+
+
+- (void)viewDidLayoutSubviews
+{
+    [super viewDidLayoutSubviews];
+}
+
+- (void)viewWillDisappear:(BOOL)animated
+{
+    [super viewWillDisappear:animated];
+    [self.view endEditing:YES];
+}
+
+- (void)viewDidDisappear:(BOOL)animated {
+    [super viewDidDisappear:animated];
+    if (_returnKeyHandler) {
+        [_returnKeyHandler setDelegate:nil];
+        _returnKeyHandler = nil;
+    }
+}
+
+#pragma mark - UITextViewDelegate, UITextFieldDelegate
+
+#pragma mark - ������ returnKey
+- (BOOL)textFieldShouldReturn:(UITextField *)textField
+{
+    if (![IQKeyboardManager sharedManager].canGoNext) {
+        [self textViewController:self inputViewDone:textField];
+    }
+    return YES;
+}
+
+- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
+    if (![IQKeyboardManager sharedManager].canGoNext && [text isEqualToString:@"\n"]) {
+        [self textViewController:self inputViewDone:textView];
+    }
+    return YES;
+}
+
+#pragma mark - LMJTextViewControllerDelegate
+- (void)textViewController:(LMJTextViewController *)textViewController inputViewDone:(id)inputView
+{
+    NSLog(@"%@, %@", self.requiredTextFields, inputView);
+}
+
+#pragma mark - autoEmpty
+
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
+{
+    // ��������� bug fix
+    if ([@"������������������������" rangeOfString:string].location != NSNotFound) {
+        return YES;
+    }
+    NSString *current = [textField.text stringByReplacingCharactersInRange:range withString:string.stringByTrim].stringByTrim;
+    
+    if (textField.isEmptyAutoEnable && (TWIsEmpty(textField.text.stringByTrim) || TWIsEmpty(current))) {
+        if (TWIsEmpty(current)) {
+            [self checkIsEmpty:YES textField:textField];
+        }else
+        {
+            [self checkIsEmpty:NO textField:textField];
+        }
+    }
+    
+    return YES;
+}
+
+- (BOOL)textFieldShouldClear:(UITextField *)textField
+{
+    if (textField.isEmptyAutoEnable) {
+        [self checkIsEmpty:YES textField:textField];
+    }
+    return YES;
+}
+
+
+#pragma mark - ������ btn��� enable
+- (void)checkIsEmpty:(BOOL)isEmpty textField:(UITextField *)textField
+{
+    if (TWIsEmpty(self.requiredTextFields)) {
+        return;
+    }
+    
+    if ([self respondsToSelector:@selector(textViewControllerRelationButtons:)]) {
+        if (TWIsEmpty([self textViewControllerRelationButtons:self])) {
+            return;
+        }
+    }else
+    {
+        return;
+    }
+    
+    __block BOOL isButtonEnabled = !isEmpty;
+    
+    if (!isEmpty) {
+        [self.requiredTextFields enumerateObjectsUsingBlock:^(UITextField *obj, NSUInteger idx, BOOL * _Nonnull stop) {
+            if (obj != textField && TWIsEmpty(obj.text.stringByTrim)) {
+                isButtonEnabled = NO;
+                *stop = YES;
+            }
+        }];
+    }
+    
+    [[self textViewControllerRelationButtons:self] enumerateObjectsUsingBlock:^(UIButton * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
+        obj.enabled = isButtonEnabled;
+    }];
+}
+
+
+
+#pragma mark - ���������
+- (void)initKeyboard
+{
+    // ������
+    IQKeyboardManager *manager = [IQKeyboardManager sharedManager];
+    manager.enable = YES;
+    manager.shouldResignOnTouchOutside = YES;
+    manager.shouldToolbarUsesTextFieldTintColor = YES;
+    manager.enableAutoToolbar = [self textViewControllerEnableAutoToolbar:self];
+    manager.shouldPlayInputClicks = YES;
+    manager.shouldShowToolbarPlaceholder = YES;
+ 
+    [self requiredTextFields];
+    [self initReturnKeyHandler];;
+}
+
+
+
+#pragma mark - LMJTextViewControllerDataSource
+
+- (BOOL)textViewControllerEnableAutoToolbar:(LMJTextViewController *)textViewController
+{
+    return YES;
+}
+
+- (UIReturnKeyType)textViewControllerLastReturnKeyType:(LMJTextViewController *)textViewController
+{
+    return UIReturnKeyDone;
+}
+
+
+- (NSArray<UITextField *> *)requiredTextFields
+{
+    if(_requiredTextFields == nil)
+    {
+        NSArray *responsedInputViews = [self.view deepResponderViews];
+        NSMutableArray<UITextField *> *array = [NSMutableArray array];
+        [responsedInputViews enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
+            
+            if ([obj isKindOfClass:[UITextField class]]) {
+                
+                UITextField *field = (UITextField *)obj;
+                field.delegate = self;
+                
+                if (field.isEmptyAutoEnable) {
+                    [array addObject:field];
+                }
+            }
+            
+            if ([obj isKindOfClass:[UITextView class]]) {
+                UITextView *textView = (UITextView *)obj;
+                textView.delegate = self;
+            }
+        }];
+        
+        _requiredTextFields = array;
+    }
+    return _requiredTextFields;
+}
+
+
+- (void)initReturnKeyHandler {
+    
+    if(_returnKeyHandler == nil) {
+        _returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
+        _returnKeyHandler.delegate = self;
+        _returnKeyHandler.lastTextFieldReturnKeyType = [self textViewControllerLastReturnKeyType:self];
+    }
+}
+
+
+- (void)dealloc
+{
+    _returnKeyHandler = nil;
+}
+
+@end
+
+
+
+#pragma mark - LMJTextViewControllerTextField
+
+static void *isEmptyAutoEnableKey = &isEmptyAutoEnableKey;
+@implementation UITextField (LMJTextViewController)
+
+- (void)setIsEmptyAutoEnable:(BOOL)isEmptyAutoEnable
+{
+    [self setAssociateValue:@(isEmptyAutoEnable) withKey:isEmptyAutoEnableKey];
+}
+
+- (BOOL)isEmptyAutoEnable
+{
+    return [(NSNumber *)[self getAssociatedValueForKey:isEmptyAutoEnableKey] boolValue];
+}
+@end
+
+@implementation LMJTextViewControllerTextField
+- (NSString *)text {
+    return ([[super text] stringByTrim]);
+}
+@end

--
Gitblit v1.8.0