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