From 83b9d5c682b21d88133f24da0f94dd56bd79e687 Mon Sep 17 00:00:00 2001
From: 单军华
Date: Thu, 19 Jul 2018 13:38:55 +0800
Subject: [PATCH] change
---
screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.m | 1068 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,068 insertions(+), 0 deletions(-)
diff --git a/screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.m b/screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.m
new file mode 100644
index 0000000..05108d3
--- /dev/null
+++ b/screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQUIView+IQKeyboardToolbar.m
@@ -0,0 +1,1068 @@
+//
+// IQUIView+IQKeyboardToolbar.m
+// https://github.com/hackiftekhar/IQKeyboardManager
+// Copyright (c) 2013-16 Iftekhar Qurashi.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+
+#import "IQUIView+IQKeyboardToolbar.h"
+#import "IQKeyboardManagerConstantsInternal.h"
+#import "IQKeyboardManager.h"
+
+#import <objc/runtime.h>
+
+#import <UIKit/UIImage.h>
+#import <UIKit/UILabel.h>
+#import <UIKit/UIAccessibility.h>
+
+/*UIKeyboardToolbar Category implementation*/
+@implementation UIView (IQToolbarAddition)
+
+-(IQToolbar *)keyboardToolbar
+{
+ IQToolbar *keyboardToolbar = nil;
+ if ([[self inputAccessoryView] isKindOfClass:[IQToolbar class]])
+ {
+ keyboardToolbar = [self inputAccessoryView];
+ }
+ else
+ {
+ keyboardToolbar = objc_getAssociatedObject(self, @selector(keyboardToolbar));
+
+ if (keyboardToolbar == nil)
+ {
+ keyboardToolbar = [[IQToolbar alloc] init];
+
+ objc_setAssociatedObject(self, @selector(keyboardToolbar), keyboardToolbar, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ }
+ }
+
+ return keyboardToolbar;
+}
+
+-(void)setShouldHideToolbarPlaceholder:(BOOL)shouldHideToolbarPlaceholder
+{
+ objc_setAssociatedObject(self, @selector(shouldHideToolbarPlaceholder), @(shouldHideToolbarPlaceholder), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+
+ self.keyboardToolbar.titleBarButton.title = self.drawingToolbarPlaceholder;
+}
+
+-(BOOL)shouldHideToolbarPlaceholder
+{
+ NSNumber *shouldHideToolbarPlaceholder = objc_getAssociatedObject(self, @selector(shouldHideToolbarPlaceholder));
+ return [shouldHideToolbarPlaceholder boolValue];
+}
+
+-(void)setShouldHidePlaceholderText:(BOOL)shouldHidePlaceholderText
+{
+ [self setShouldHideToolbarPlaceholder:shouldHidePlaceholderText];
+}
+
+-(BOOL)shouldHidePlaceholderText
+{
+ return [self shouldHideToolbarPlaceholder];
+}
+
+-(void)setToolbarPlaceholder:(NSString *)toolbarPlaceholder
+{
+ objc_setAssociatedObject(self, @selector(toolbarPlaceholder), toolbarPlaceholder, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+
+ self.keyboardToolbar.titleBarButton.title = self.drawingToolbarPlaceholder;
+}
+
+-(NSString *)toolbarPlaceholder
+{
+ NSString *toolbarPlaceholder = objc_getAssociatedObject(self, @selector(toolbarPlaceholder));
+ return toolbarPlaceholder;
+}
+
+-(void)setPlaceholderText:(NSString*)placeholderText
+{
+ [self setToolbarPlaceholder:placeholderText];
+}
+
+-(NSString*)placeholderText
+{
+ return [self toolbarPlaceholder];
+}
+
+-(NSString *)drawingToolbarPlaceholder
+{
+ if (self.shouldHideToolbarPlaceholder)
+ {
+ return nil;
+ }
+ else if (self.toolbarPlaceholder.length != 0)
+ {
+ return self.toolbarPlaceholder;
+ }
+ else if ([self respondsToSelector:@selector(placeholder)])
+ {
+ return [(UITextField*)self placeholder];
+ }
+ else
+ {
+ return nil;
+ }
+}
+
+-(NSString*)drawingPlaceholderText
+{
+ return [self drawingToolbarPlaceholder];
+}
+
+#pragma mark - Private helper
+
++(IQBarButtonItem*)flexibleBarButtonItem
+{
+ static IQBarButtonItem *nilButton = nil;
+
+ if (nilButton == nil)
+ {
+ nilButton = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
+ }
+
+ return nilButton;
+}
+
+#pragma mark - Toolbar on UIKeyboard
+
+- (void)addRightButtonOnKeyboardWithImage:(UIImage*)image target:(id)target action:(SEL)action titleText:(NSString*)titleText
+{
+ // If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Right button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton.title = nil;
+ doneButton.image = image;
+ doneButton.target = target;
+ doneButton.action = action;
+ }
+ else
+ {
+ doneButton = [[IQBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:target action:action];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+- (void)addRightButtonOnKeyboardWithImage:(UIImage*)image target:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addRightButtonOnKeyboardWithImage:image target:target action:action titleText:title];
+}
+
+- (void)addRightButtonOnKeyboardWithText:(NSString*)text target:(id)target action:(SEL)action titleText:(NSString*)titleText
+{
+ // If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Right button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton.title = text;
+ doneButton.image = nil;
+ doneButton.target = target;
+ doneButton.action = action;
+ }
+ else
+ {
+ doneButton =[[IQBarButtonItem alloc] initWithTitle:text style:UIBarButtonItemStyleDone target:target action:action];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+- (void)addRightButtonOnKeyboardWithText:(NSString*)text target:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addRightButtonOnKeyboardWithText:text target:target action:action titleText:title];
+}
+
+- (void)addRightButtonOnKeyboardWithText:(NSString*)text target:(id)target action:(SEL)action
+{
+ [self addRightButtonOnKeyboardWithText:text target:target action:action titleText:nil];
+}
+
+
+- (void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action titleText:(NSString*)titleText
+{
+ // If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Done button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:action];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+ else
+ {
+ doneButton.target = target;
+ doneButton.action = action;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+-(void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addDoneOnKeyboardWithTarget:target action:action titleText:title];
+}
+
+-(void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action
+{
+ [self addDoneOnKeyboardWithTarget:target action:action titleText:nil];
+}
+
+- (void)addLeftRightOnKeyboardWithTarget:(id)target leftButtonTitle:(NSString*)leftTitle rightButtonTitle:(NSString*)rightTitle leftButtonAction:(SEL)leftAction rightButtonAction:(SEL)rightAction titleText:(NSString*)titleText
+{
+ // If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ //Left button
+ IQBarButtonItem *cancelButton = toolbar.previousBarButton;
+ if (cancelButton.isSystemItem == NO)
+ {
+ cancelButton.title = leftTitle;
+ cancelButton.image = nil;
+ cancelButton.target = target;
+ cancelButton.action = leftAction;
+ }
+ else
+ {
+ cancelButton = [[IQBarButtonItem alloc] initWithTitle:leftTitle style:UIBarButtonItemStylePlain target:target action:leftAction];
+ cancelButton.invocation = toolbar.previousBarButton.invocation;
+ cancelButton.accessibilityLabel = toolbar.previousBarButton.accessibilityLabel;
+ toolbar.previousBarButton = cancelButton;
+ }
+
+ [items addObject:cancelButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Right button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton.title = rightTitle;
+ doneButton.image = nil;
+ doneButton.target = target;
+ doneButton.action = rightAction;
+ }
+ else
+ {
+ doneButton =[[IQBarButtonItem alloc] initWithTitle:rightTitle style:UIBarButtonItemStyleDone target:target action:rightAction];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+- (void)addLeftRightOnKeyboardWithTarget:(id)target leftButtonTitle:(NSString*)leftTitle rightButtonTitle:(NSString*)rightTitle leftButtonAction:(SEL)leftAction rightButtonAction:(SEL)rightAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addLeftRightOnKeyboardWithTarget:target leftButtonTitle:leftTitle rightButtonTitle:rightTitle leftButtonAction:leftAction rightButtonAction:rightAction titleText:title];
+}
+
+- (void)addLeftRightOnKeyboardWithTarget:(id)target leftButtonTitle:(NSString*)leftTitle rightButtonTitle:(NSString*)rightTitle leftButtonAction:(SEL)leftAction rightButtonAction:(SEL)rightAction
+{
+ [self addLeftRightOnKeyboardWithTarget:target leftButtonTitle:leftTitle rightButtonTitle:rightTitle leftButtonAction:leftAction rightButtonAction:rightAction titleText:nil];
+}
+
+- (void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction titleText:(NSString*)titleText
+{
+ // If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ //Cancel button
+ IQBarButtonItem *cancelButton = toolbar.previousBarButton;
+ if (cancelButton.isSystemItem == NO)
+ {
+ cancelButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:target action:cancelAction];
+ cancelButton.invocation = toolbar.previousBarButton.invocation;
+ cancelButton.accessibilityLabel = toolbar.previousBarButton.accessibilityLabel;
+ toolbar.previousBarButton = cancelButton;
+ }
+ else
+ {
+ cancelButton.target = target;
+ cancelButton.action = cancelAction;
+ }
+
+ [items addObject:cancelButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Done button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+ else
+ {
+ doneButton.target = target;
+ doneButton.action = doneAction;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+-(void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addCancelDoneOnKeyboardWithTarget:target cancelAction:cancelAction doneAction:doneAction titleText:title];
+}
+
+-(void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction
+{
+ [self addCancelDoneOnKeyboardWithTarget:target cancelAction:cancelAction doneAction:doneAction titleText:nil];
+}
+
+- (void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction titleText:(NSString*)titleText
+{
+ //If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for phoneNumber keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ // Get the top level "bundle" which may actually be the framework
+ NSBundle *mainBundle = [NSBundle bundleForClass:[IQKeyboardManager class]];
+
+ // Check to see if the resource bundle exists inside the top level bundle
+ NSBundle *resourcesBundle = [NSBundle bundleWithPath:[mainBundle pathForResource:@"IQKeyboardManager" ofType:@"bundle"]];
+
+ if (resourcesBundle == nil) {
+ resourcesBundle = mainBundle;
+ }
+
+ UIImage *imageLeftArrow = nil;
+ UIImage *imageRightArrow = nil;
+
+#ifdef __IPHONE_11_0
+ if (@available(iOS 10.0, *))
+#else
+ if (IQ_IS_IOS10_OR_GREATER)
+#endif
+ {
+ imageLeftArrow = [UIImage imageNamed:@"IQButtonBarArrowUp" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ imageRightArrow = [UIImage imageNamed:@"IQButtonBarArrowDown" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ }
+ else
+ {
+ imageLeftArrow = [UIImage imageNamed:@"IQButtonBarArrowLeft" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ imageRightArrow = [UIImage imageNamed:@"IQButtonBarArrowRight" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ }
+
+ //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448)
+#ifdef __IPHONE_11_0
+ if (@available(iOS 9.0, *)) {
+#endif
+ if ([UIImage instancesRespondToSelector:@selector(imageFlippedForRightToLeftLayoutDirection)])
+ {
+ imageLeftArrow = [imageLeftArrow imageFlippedForRightToLeftLayoutDirection];
+ imageRightArrow = [imageRightArrow imageFlippedForRightToLeftLayoutDirection];
+ }
+#ifdef __IPHONE_11_0
+ }
+#endif
+
+ //Previous button
+ IQBarButtonItem *prev = toolbar.previousBarButton;
+ if (prev.isSystemItem == NO)
+ {
+ prev.title = nil;
+ prev.image = imageLeftArrow;
+ prev.target = target;
+ prev.action = previousAction;
+ }
+ else
+ {
+ prev = [[IQBarButtonItem alloc] initWithImage:imageLeftArrow style:UIBarButtonItemStylePlain target:target action:previousAction];
+ prev.invocation = toolbar.previousBarButton.invocation;
+ prev.accessibilityLabel = toolbar.previousBarButton.accessibilityLabel;
+ toolbar.previousBarButton = prev;
+ }
+
+ [items addObject:prev];
+
+ //Fixed space
+ IQBarButtonItem *fixed = toolbar.fixedSpaceBarButton;
+
+#ifdef __IPHONE_11_0
+ if (@available(iOS 10.0, *))
+#else
+ if (IQ_IS_IOS10_OR_GREATER)
+#endif
+ {
+ [fixed setWidth:6];
+ }
+ else
+ {
+ [fixed setWidth:20];
+ }
+ [items addObject:fixed];
+
+ //Next button
+ IQBarButtonItem *next = toolbar.nextBarButton;
+ if (next.isSystemItem == NO)
+ {
+ next.title = nil;
+ next.image = imageRightArrow;
+ next.target = target;
+ next.action = nextAction;
+ }
+ else
+ {
+ next = [[IQBarButtonItem alloc] initWithImage:imageRightArrow style:UIBarButtonItemStylePlain target:target action:nextAction];
+ next.invocation = toolbar.nextBarButton.invocation;
+ next.accessibilityLabel = toolbar.nextBarButton.accessibilityLabel;
+ toolbar.nextBarButton = next;
+ }
+
+ [items addObject:next];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Done button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+ else
+ {
+ doneButton.target = target;
+ doneButton.action = doneAction;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+-(void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addPreviousNextDoneOnKeyboardWithTarget:target previousAction:previousAction nextAction:nextAction doneAction:doneAction titleText:title];
+}
+
+-(void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction
+{
+ [self addPreviousNextDoneOnKeyboardWithTarget:target previousAction:previousAction nextAction:nextAction doneAction:doneAction titleText:nil];
+}
+
+- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonImage:(UIImage*)rightButtonImage previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction titleText:(NSString*)titleText
+{
+ //If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for phoneNumber keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ // Get the top level "bundle" which may actually be the framework
+ NSBundle *mainBundle = [NSBundle bundleForClass:[IQKeyboardManager class]];
+
+ // Check to see if the resource bundle exists inside the top level bundle
+ NSBundle *resourcesBundle = [NSBundle bundleWithPath:[mainBundle pathForResource:@"IQKeyboardManager" ofType:@"bundle"]];
+
+ if (resourcesBundle == nil) {
+ resourcesBundle = mainBundle;
+ }
+
+ UIImage *imageLeftArrow = nil;
+ UIImage *imageRightArrow = nil;
+
+#ifdef __IPHONE_11_0
+ if (@available(iOS 10.0, *))
+#else
+ if (IQ_IS_IOS10_OR_GREATER)
+#endif
+ {
+ imageLeftArrow = [UIImage imageNamed:@"IQButtonBarArrowUp" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ imageRightArrow = [UIImage imageNamed:@"IQButtonBarArrowDown" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ }
+ else
+ {
+ imageLeftArrow = [UIImage imageNamed:@"IQButtonBarArrowLeft" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ imageRightArrow = [UIImage imageNamed:@"IQButtonBarArrowRight" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ }
+
+ //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448)
+#ifdef __IPHONE_11_0
+ if (@available(iOS 9.0, *)) {
+#endif
+ if ([UIImage instancesRespondToSelector:@selector(imageFlippedForRightToLeftLayoutDirection)])
+ {
+ imageLeftArrow = [imageLeftArrow imageFlippedForRightToLeftLayoutDirection];
+ imageRightArrow = [imageRightArrow imageFlippedForRightToLeftLayoutDirection];
+ }
+#ifdef __IPHONE_11_0
+ }
+#endif
+
+ //Previous button
+ IQBarButtonItem *prev = toolbar.previousBarButton;
+ if (prev.isSystemItem == NO)
+ {
+ prev.title = nil;
+ prev.image = imageLeftArrow;
+ prev.target = target;
+ prev.action = previousAction;
+ }
+ else
+ {
+ prev = [[IQBarButtonItem alloc] initWithImage:imageLeftArrow style:UIBarButtonItemStylePlain target:target action:previousAction];
+ prev.invocation = toolbar.previousBarButton.invocation;
+ prev.accessibilityLabel = toolbar.previousBarButton.accessibilityLabel;
+ toolbar.previousBarButton = prev;
+ }
+
+ [items addObject:prev];
+
+ //Fixed space
+ IQBarButtonItem *fixed = toolbar.fixedSpaceBarButton;
+
+#ifdef __IPHONE_11_0
+ if (@available(iOS 10.0, *))
+#else
+ if (IQ_IS_IOS10_OR_GREATER)
+#endif
+ {
+ [fixed setWidth:6];
+ }
+ else
+ {
+ [fixed setWidth:20];
+ }
+ [items addObject:fixed];
+
+ //Next button
+ IQBarButtonItem *next = toolbar.nextBarButton;
+ if (next.isSystemItem == NO)
+ {
+ next.title = nil;
+ next.image = imageRightArrow;
+ next.target = target;
+ next.action = nextAction;
+ }
+ else
+ {
+ next = [[IQBarButtonItem alloc] initWithImage:imageRightArrow style:UIBarButtonItemStylePlain target:target action:nextAction];
+ next.invocation = toolbar.nextBarButton.invocation;
+ next.accessibilityLabel = toolbar.nextBarButton.accessibilityLabel;
+ toolbar.nextBarButton = next;
+ }
+
+ [items addObject:next];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Right button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton.title = nil;
+ doneButton.image = rightButtonImage;
+ doneButton.target = target;
+ doneButton.action = rightButtonAction;
+ }
+ else
+ {
+ doneButton = [[IQBarButtonItem alloc] initWithImage:rightButtonImage style:UIBarButtonItemStyleDone target:target action:rightButtonAction];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonImage:(nullable UIImage*)rightButtonImage previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addPreviousNextRightOnKeyboardWithTarget:target rightButtonImage:rightButtonImage previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:title];
+}
+
+- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction titleText:(NSString*)titleText
+{
+ //If can't set InputAccessoryView. Then return
+ if (![self respondsToSelector:@selector(setInputAccessoryView:)]) return;
+
+ // Creating a toolBar for phoneNumber keyboard
+ IQToolbar *toolbar = self.keyboardToolbar;
+
+ if ([self respondsToSelector:@selector(keyboardAppearance)])
+ {
+ switch ([(UITextField*)self keyboardAppearance])
+ {
+ case UIKeyboardAppearanceAlert: toolbar.barStyle = UIBarStyleBlack; break;
+ default: toolbar.barStyle = UIBarStyleDefault; break;
+ }
+ }
+
+ NSMutableArray<UIBarButtonItem*> *items = [[NSMutableArray alloc] init];
+
+ // Get the top level "bundle" which may actually be the framework
+ NSBundle *mainBundle = [NSBundle bundleForClass:[IQKeyboardManager class]];
+
+ // Check to see if the resource bundle exists inside the top level bundle
+ NSBundle *resourcesBundle = [NSBundle bundleWithPath:[mainBundle pathForResource:@"IQKeyboardManager" ofType:@"bundle"]];
+
+ if (resourcesBundle == nil) {
+ resourcesBundle = mainBundle;
+ }
+
+ UIImage *imageLeftArrow = nil;
+ UIImage *imageRightArrow = nil;
+
+#ifdef __IPHONE_11_0
+ if (@available(iOS 10.0, *))
+#else
+ if (IQ_IS_IOS10_OR_GREATER)
+#endif
+ {
+ imageLeftArrow = [UIImage imageNamed:@"IQButtonBarArrowUp" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ imageRightArrow = [UIImage imageNamed:@"IQButtonBarArrowDown" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ }
+ else
+ {
+ imageLeftArrow = [UIImage imageNamed:@"IQButtonBarArrowLeft" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ imageRightArrow = [UIImage imageNamed:@"IQButtonBarArrowRight" inBundle:resourcesBundle compatibleWithTraitCollection:nil];
+ }
+
+ //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448)
+#ifdef __IPHONE_11_0
+ if (@available(iOS 9.0, *)) {
+#endif
+ if ([UIImage instancesRespondToSelector:@selector(imageFlippedForRightToLeftLayoutDirection)])
+ {
+ imageLeftArrow = [imageLeftArrow imageFlippedForRightToLeftLayoutDirection];
+ imageRightArrow = [imageRightArrow imageFlippedForRightToLeftLayoutDirection];
+ }
+#ifdef __IPHONE_11_0
+ }
+#endif
+
+ //Previous button
+ IQBarButtonItem *prev = toolbar.previousBarButton;
+ if (prev.isSystemItem == NO)
+ {
+ prev.title = nil;
+ prev.image = imageLeftArrow;
+ prev.target = target;
+ prev.action = previousAction;
+ }
+ else
+ {
+ prev = [[IQBarButtonItem alloc] initWithImage:imageLeftArrow style:UIBarButtonItemStylePlain target:target action:previousAction];
+ prev.invocation = toolbar.previousBarButton.invocation;
+ prev.accessibilityLabel = toolbar.previousBarButton.accessibilityLabel;
+ toolbar.previousBarButton = prev;
+ }
+ [items addObject:prev];
+
+ //Fixed space
+ IQBarButtonItem *fixed = toolbar.fixedSpaceBarButton;
+
+#ifdef __IPHONE_11_0
+ if (@available(iOS 10.0, *))
+#else
+ if (IQ_IS_IOS10_OR_GREATER)
+#endif
+ {
+ [fixed setWidth:6];
+ }
+ else
+ {
+ [fixed setWidth:20];
+ }
+ [items addObject:fixed];
+
+ //Next button
+ IQBarButtonItem *next = toolbar.nextBarButton;
+ if (next.isSystemItem == NO)
+ {
+ next.title = nil;
+ next.image = imageRightArrow;
+ next.target = target;
+ next.action = nextAction;
+ }
+ else
+ {
+ next = [[IQBarButtonItem alloc] initWithImage:imageRightArrow style:UIBarButtonItemStylePlain target:target action:nextAction];
+ next.invocation = toolbar.nextBarButton.invocation;
+ next.accessibilityLabel = toolbar.nextBarButton.accessibilityLabel;
+ toolbar.nextBarButton = next;
+ }
+ [items addObject:next];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Title button
+ toolbar.titleBarButton.title = self.shouldHideToolbarPlaceholder?nil:titleText;
+#ifdef __IPHONE_11_0
+ if (@available(iOS 11.0, *)) {}
+ else
+#endif
+ {
+ toolbar.titleBarButton.customView.frame = CGRectZero;
+ }
+ [items addObject:toolbar.titleBarButton];
+
+ //Flexible space
+ [items addObject:[[self class] flexibleBarButtonItem]];
+
+ //Right button
+ IQBarButtonItem *doneButton = toolbar.doneBarButton;
+ if (doneButton.isSystemItem == NO)
+ {
+ doneButton.title = rightButtonTitle;
+ doneButton.image = nil;
+ doneButton.target = target;
+ doneButton.action = rightButtonAction;
+ }
+ else
+ {
+ doneButton =[[IQBarButtonItem alloc] initWithTitle:rightButtonTitle style:UIBarButtonItemStyleDone target:target action:rightButtonAction];
+ doneButton.invocation = toolbar.doneBarButton.invocation;
+ doneButton.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel;
+ toolbar.doneBarButton = doneButton;
+ }
+
+ [items addObject:doneButton];
+
+ // Adding button to toolBar.
+ [toolbar setItems:items];
+
+ // Setting toolbar to keyboard.
+ [(UITextField*)self setInputAccessoryView:toolbar];
+}
+
+- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction shouldShowPlaceholder:(BOOL)shouldShowPlaceholder
+{
+ NSString *title = nil;
+
+ if (shouldShowPlaceholder)
+ title = [self drawingToolbarPlaceholder];
+
+ [self addPreviousNextRightOnKeyboardWithTarget:target rightButtonTitle:rightButtonTitle previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:title];
+}
+
+- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction
+{
+ [self addPreviousNextRightOnKeyboardWithTarget:target rightButtonTitle:rightButtonTitle previousAction:previousAction nextAction:nextAction rightButtonAction:rightButtonAction titleText:nil];
+}
+
+@end
--
Gitblit v1.8.0