Added toolbar tint property, IQBarButtonItem removed, fixed a bug related to UISearchBar, Added enabling IQKeyboardManager on class loading, No need to write any code

This commit is contained in:
hackiftekhar
2014-03-06 19:00:51 +05:30
parent 046fbdc68f
commit f0236b0e10
16 changed files with 111 additions and 166 deletions

View File

@@ -1,28 +0,0 @@
//
// IQBarButtonItem.h
// https://github.com/hackiftekhar/IQKeyboardManager
// Copyright (c) 2013-14 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 <UIKit/UIBarButtonItem.h>
@interface IQBarButtonItem : UIBarButtonItem
@end

View File

@@ -1,45 +0,0 @@
//
// IQBarButtonItem.m
// https://github.com/hackiftekhar/IQKeyboardManager
// Copyright (c) 2013-14 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 "IQBarButtonItem.h"
#import "IQToolbar.h"
#import "IQKeyboardManagerConstantsInternal.h"
@implementation IQBarButtonItem
- (id)init
{
self = [super init];
if (self)
{
if (IQ_IS_IOS7_OR_GREATER)
{
[self setTintColor:[UIColor blackColor]];
}
}
return self;
}
@end

View File

@@ -61,7 +61,7 @@
/*!
@property enableAutoToolbar
@abstract Automatic add the IQToolbar functionality. Default is NO.
@abstract Automatic add the IQToolbar functionality. Default is YES.
*/
@property(nonatomic, assign, getter = isEnableAutoToolbar) BOOL enableAutoToolbar;
@@ -82,7 +82,7 @@
/*!
@property shouldShowTextFieldPlaceholder
@abstract If YES, then it add the textField's placeholder text on IQToolbar. Default is NO.
@abstract If YES, then it add the textField's placeholder text on IQToolbar. Default is YES.
*/
@property(nonatomic, assign) BOOL shouldShowTextFieldPlaceholder;
@@ -93,6 +93,13 @@
*/
@property(nonatomic, assign) BOOL shouldPlayInputClicks;
/*!
@property toolbarUsesCurrentWindowTintColor
@abstract If YES, then uses textField's tintColor property for IQToolbar, otherwise tint color is black. Default is NO.
*/
@property(nonatomic, assign) BOOL shouldToolbarUsesTextFieldTintColor NS_AVAILABLE_IOS(7_0);
/*!
@property toolbarManageStyle
@@ -115,7 +122,7 @@
- (id)init __attribute__((unavailable("init is not available in IQKeyboardManager, Use sharedManager")));
/*!
@method init
@method new
@abstract Should create only one instance of class. Should not call new.
*/

View File

@@ -27,7 +27,6 @@
#import "UIWindow+Hierarchy.h"
#import "NSArray+Sort.h"
#import "IQToolbar.h"
#import "IQBarButtonItem.h"
#import <UIKit/UITapGestureRecognizer.h>
#import <UIKit/UITextField.h>
@@ -40,7 +39,7 @@
//Remove compiler warning
-(void)previousAction:(id)segmentedControl;
-(void)nextAction:(id)segmentedControl;
-(void)doneAction:(IQBarButtonItem*)barButton;
-(void)doneAction:(UIBarButtonItem*)barButton;
@end
@@ -115,6 +114,13 @@
#pragma mark - Initializing functions
//Override +load method to enable KeyboardManager when class loader load IQKeyboardManager
+(void)load
{
[super load];
[[IQKeyboardManager sharedManager] setEnable:YES];
}
// Singleton Object Initialization.
-(id)init
{
@@ -144,12 +150,16 @@
animationDuration = 0.25;
_enable = NO;
[self setShouldResignOnTouchOutside:NO];
[self setEnableAutoToolbar:NO];
[self setCanAdjustTextView:NO];
[self setShouldShowTextFieldPlaceholder:NO];
[self setShouldPlayInputClicks:NO];
[self setShouldResignOnTouchOutside:NO];
[self setShouldToolbarUsesTextFieldTintColor:NO];
[self setEnableAutoToolbar:YES];
[self setShouldShowTextFieldPlaceholder:YES];
[self setToolbarManageBehaviour:IQAutoToolbarBySubviews];
_keyWindow = [self keyWindow];
});
}
@@ -784,7 +794,7 @@
}
// Done button action. Resigning current textField.
-(void)doneAction:(IQBarButtonItem*)barButton
-(void)doneAction:(UIBarButtonItem*)barButton
{
if (_shouldPlayInputClicks)
{
@@ -802,10 +812,15 @@
// If only one object is found, then adding only Done button.
if (siblings.count==1)
{
if (![[siblings objectAtIndex:0] inputAccessoryView])
UIView *textField = [siblings objectAtIndex:0];
if (![textField inputAccessoryView])
{
[[siblings objectAtIndex:0] addDoneOnKeyboardWithTarget:self action:@selector(doneAction:) shouldShowPlaceholder:_shouldShowTextFieldPlaceholder];
}
[textField addDoneOnKeyboardWithTarget:self action:@selector(doneAction:) shouldShowPlaceholder:_shouldShowTextFieldPlaceholder];
//Setting toolbar tintColor
if (_shouldToolbarUsesTextFieldTintColor && [textField respondsToSelector:@selector(tintColor)])
[textField.inputAccessoryView setTintColor:[textField tintColor]];
}
}
else if(siblings.count)
{
@@ -815,7 +830,11 @@
if (![textField inputAccessoryView])
{
[textField addPreviousNextDoneOnKeyboardWithTarget:self previousAction:@selector(previousAction:) nextAction:@selector(nextAction:) doneAction:@selector(doneAction:) shouldShowPlaceholder:_shouldShowTextFieldPlaceholder];
}
//Setting toolbar tintColor
if (_shouldToolbarUsesTextFieldTintColor && [textField respondsToSelector:@selector(tintColor)])
[textField.inputAccessoryView setTintColor:[textField tintColor]];
}
//In case of UITableView (Special), the next/previous buttons has to be refreshed everytime.
// If firstTextField, then previous should not be enabled.

View File

@@ -21,10 +21,9 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <UIKit/UIKit.h>
#import "IQBarButtonItem.h"
#import <UIKit/UIBarButtonItem.h>
@interface IQTitleBarButtonItem : IQBarButtonItem
@interface IQTitleBarButtonItem : UIBarButtonItem
-(id)initWithFrame:(CGRect)frame Title:(NSString *)title;

View File

@@ -31,7 +31,11 @@
{
[self sizeToFit];
if (!IQ_IS_IOS7_OR_GREATER)
if (IQ_IS_IOS7_OR_GREATER)
{
[self setTintColor:[UIColor blackColor]];
}
else
{
[self setBarStyle:UIBarStyleBlackTranslucent];
}

View File

@@ -114,7 +114,7 @@ IQ_LoadCategory(IQUIViewHierarchy)
-(BOOL)isInsideSearchBar
{
UIView *superview = self.superview;
UIView *superview = self;
while (superview)
{

View File

@@ -42,7 +42,7 @@
@param target: Target object for selector. Usually 'self'.
@param action: Done button action name. Usually 'doneAction:(IQBarButtonItem*)item'.
@param action: Done button action name. Usually 'doneAction:(UIBarButtonItem*)item'.
@param shouldShowPlaceholder: A boolean to indicate whether to show textField placeholder on IQToolbar'.
@@ -63,9 +63,9 @@
@param target: Target object for selector. Usually 'self'.
@param cancelAction: Crevious button action name. Usually 'cancelAction:(IQBarButtonItem*)item'.
@param cancelAction: Crevious button action name. Usually 'cancelAction:(UIBarButtonItem*)item'.
@param doneAction: Done button action name. Usually 'doneAction:(IQBarButtonItem*)item'.
@param doneAction: Done button action name. Usually 'doneAction:(UIBarButtonItem*)item'.
@param shouldShowPlaceholder: A boolean to indicate whether to show textField placeholder on IQToolbar'.
@@ -89,7 +89,7 @@
@param nextAction: Next button action name. Usually 'nextAction:(IQSegmentedNextPrevious*)segmentedControl'.
@param doneAction: Done button action name. Usually 'doneAction:(IQBarButtonItem*)item'.
@param doneAction: Done button action name. Usually 'doneAction:(UIBarButtonItem*)item'.
@param shouldShowPlaceholder: A boolean to indicate whether to show textField placeholder on IQToolbar'.

View File

@@ -74,11 +74,11 @@ IQ_LoadCategory(IQUIViewToolbar)
}
// Create a fake button to maintain flexibleSpace between doneButton and nilButton. (Actually it moves done button to right side.
IQBarButtonItem *nilButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *nilButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:nilButton];
// Create a done button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithTitle:text style:UIBarButtonItemStyleDone target:target action:action];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithTitle:text style:UIBarButtonItemStyleDone target:target action:action];
[items addObject:doneButton];
// Adding button to toolBar.
@@ -139,11 +139,11 @@ IQ_LoadCategory(IQUIViewToolbar)
}
// Create a fake button to maintain flexibleSpace between doneButton and nilButton. (Actually it moves done button to right side.
IQBarButtonItem *nilButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *nilButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:nilButton];
// Create a done button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:action];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:action];
[items addObject:doneButton];
// Adding button to toolBar.
@@ -180,7 +180,7 @@ IQ_LoadCategory(IQUIViewToolbar)
NSMutableArray *items = [[NSMutableArray alloc] init];
// Create a cancel button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *cancelButton =[[IQBarButtonItem alloc] initWithTitle:leftTitle style:UIBarButtonItemStyleBordered target:target action:leftAction];
UIBarButtonItem *cancelButton =[[UIBarButtonItem alloc] initWithTitle:leftTitle style:UIBarButtonItemStyleBordered target:target action:leftAction];
[items addObject:cancelButton];
if ([titleText length])
@@ -211,11 +211,11 @@ IQ_LoadCategory(IQUIViewToolbar)
}
// Create a fake button to maintain flexibleSpace between doneButton and nilButton. (Actually it moves done button to right side.
IQBarButtonItem *nilButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *nilButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:nilButton];
// Create a done button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithTitle:rightTitle style:UIBarButtonItemStyleBordered target:target action:rightAction];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithTitle:rightTitle style:UIBarButtonItemStyleBordered target:target action:rightAction];
[items addObject:doneButton];
// Adding button to toolBar.
@@ -250,7 +250,7 @@ IQ_LoadCategory(IQUIViewToolbar)
NSMutableArray *items = [[NSMutableArray alloc] init];
// Create a cancel button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *cancelButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:target action:cancelAction];
UIBarButtonItem *cancelButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:target action:cancelAction];
[items addObject:cancelButton];
if ([titleText length])
@@ -281,11 +281,11 @@ IQ_LoadCategory(IQUIViewToolbar)
}
// Create a fake button to maintain flexibleSpace between doneButton and nilButton. (Actually it moves done button to right side.
IQBarButtonItem *nilButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *nilButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:nilButton];
// Create a done button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
[items addObject:doneButton];
// Adding button to toolBar.
@@ -316,32 +316,29 @@ IQ_LoadCategory(IQUIViewToolbar)
// Creating a toolBar for phoneNumber keyboard
IQToolbar *toolbar = [[IQToolbar alloc] init];
NSMutableArray *items = [[NSMutableArray alloc] init];
// Create a done button to show on keyboard to resign it. Adding a selector to resign it.
IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
if (IQ_IS_IOS7_OR_GREATER)
{
// IQBarButtonItem *prev = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:105 target:target action:previousAction];
// IQBarButtonItem *next = [[IQBarButtonItem alloc] initWithBarButtonSystemItem:106 target:target action:nextAction];
// UIBarButtonItem *prev = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:target action:previousAction];
// UIBarButtonItem *next = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:target action:nextAction];
IQBarButtonItem *prev = [[IQBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IQKeyboardManager.bundle/IQButtonBarArrowLeft"] style:UIBarButtonItemStylePlain target:target action:previousAction];
IQBarButtonItem *fixed =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
UIBarButtonItem *prev = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IQKeyboardManager.bundle/IQButtonBarArrowLeft"] style:UIBarButtonItemStylePlain target:target action:previousAction];
UIBarButtonItem *fixed =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[fixed setWidth:23];
IQBarButtonItem *next = [[IQBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IQKeyboardManager.bundle/IQButtonBarArrowRight"] style:UIBarButtonItemStylePlain target:target action:nextAction];
UIBarButtonItem *next = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IQKeyboardManager.bundle/IQButtonBarArrowRight"] style:UIBarButtonItemStylePlain target:target action:nextAction];
[items addObject:prev];
[items addObject:fixed];
[items addObject:next];
[doneButton setTintColor:[UIColor blackColor]];
}
else
{
// Create a next/previous button to switch between TextFieldViews.
IQSegmentedNextPrevious *segControl = [[IQSegmentedNextPrevious alloc] initWithTarget:target previousAction:previousAction nextAction:nextAction];
IQBarButtonItem *segButton = [[IQBarButtonItem alloc] initWithCustomView:segControl];
UIBarButtonItem *segButton = [[UIBarButtonItem alloc] initWithCustomView:segControl];
[items addObject:segButton];
}
@@ -372,7 +369,7 @@ IQ_LoadCategory(IQUIViewToolbar)
[items addObject:title];
}
IQBarButtonItem *nilButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *nilButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:nilButton];
[items addObject:doneButton];
@@ -410,11 +407,11 @@ IQ_LoadCategory(IQUIViewToolbar)
if (IQ_IS_IOS7_OR_GREATER && [[inputAccessoryView items] count]>3)
{
// Getting first item from inputAccessoryView.
IQBarButtonItem *prevButton = (IQBarButtonItem*)[[inputAccessoryView items] objectAtIndex:0];
IQBarButtonItem *nextButton = (IQBarButtonItem*)[[inputAccessoryView items] objectAtIndex:2];
UIBarButtonItem *prevButton = (UIBarButtonItem*)[[inputAccessoryView items] objectAtIndex:0];
UIBarButtonItem *nextButton = (UIBarButtonItem*)[[inputAccessoryView items] objectAtIndex:2];
// If it is IQBarButtonItem and it's customView is not nil.
if ([prevButton isKindOfClass:[IQBarButtonItem class]] && [nextButton isKindOfClass:[IQBarButtonItem class]])
// If it is UIBarButtonItem and it's customView is not nil.
if ([prevButton isKindOfClass:[UIBarButtonItem class]] && [nextButton isKindOfClass:[UIBarButtonItem class]])
{
if (prevButton.enabled != isPreviousEnabled)
[prevButton setEnabled:isPreviousEnabled];
@@ -425,10 +422,10 @@ IQ_LoadCategory(IQUIViewToolbar)
else
{
// Getting first item from inputAccessoryView.
IQBarButtonItem *barButtonItem = (IQBarButtonItem*)[[inputAccessoryView items] objectAtIndex:0];
UIBarButtonItem *barButtonItem = (UIBarButtonItem*)[[inputAccessoryView items] objectAtIndex:0];
// If it is UIBarButtonItem and it's customView is not nil.
if ([barButtonItem isKindOfClass:[IQBarButtonItem class]] && [barButtonItem customView] != nil)
if ([barButtonItem isKindOfClass:[UIBarButtonItem class]] && [barButtonItem customView] != nil)
{
// Getting it's customView.
IQSegmentedNextPrevious *segmentedControl = (IQSegmentedNextPrevious*)[barButtonItem customView];

View File

@@ -20,7 +20,6 @@
9D0BB87A18BB232B00667349 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9D0BB87818BB232B00667349 /* InfoPlist.strings */; };
9D0BB88418BB261500667349 /* UIWindow+Hierarchy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0BB88318BB261500667349 /* UIWindow+Hierarchy.m */; };
9D0BB88718BB293D00667349 /* NSArray+Sort.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0BB88618BB293D00667349 /* NSArray+Sort.m */; };
9D0BB88A18BB46E000667349 /* IQBarButtonItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0BB88918BB46E000667349 /* IQBarButtonItem.m */; };
9D18420A18C7015A00CF17FF /* IQTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D18420818C7015A00CF17FF /* IQTextView.h */; settings = {ATTRIBUTES = (Public, ); }; };
9D18420B18C7015A00CF17FF /* IQTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D18420918C7015A00CF17FF /* IQTextView.m */; };
9D18420C18C7015A00CF17FF /* IQTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D18420918C7015A00CF17FF /* IQTextView.m */; };
@@ -36,8 +35,6 @@
9DF8A9E218BB5ED8008E93B8 /* IQKeyboardManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AFF236BE17CA224400760F6C /* IQKeyboardManager.m */; };
9DF8A9E318BB5ED8008E93B8 /* IQToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0BB81C18BB18AA00667349 /* IQToolbar.h */; };
9DF8A9E418BB5ED8008E93B8 /* IQToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0BB81D18BB18AA00667349 /* IQToolbar.m */; };
9DF8A9E518BB5ED8008E93B8 /* IQBarButtonItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0BB88818BB46E000667349 /* IQBarButtonItem.h */; };
9DF8A9E618BB5ED8008E93B8 /* IQBarButtonItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0BB88918BB46E000667349 /* IQBarButtonItem.m */; };
9DF8A9E718BB5ED8008E93B8 /* IQSegmentedNextPrevious.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0BB82218BB195300667349 /* IQSegmentedNextPrevious.h */; };
9DF8A9E818BB5ED8008E93B8 /* IQSegmentedNextPrevious.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0BB82318BB195300667349 /* IQSegmentedNextPrevious.m */; };
9DF8A9E918BB5ED8008E93B8 /* IQKeyboardManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0BB82518BB1A9D00667349 /* IQKeyboardManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -97,8 +94,6 @@
9D0BB88318BB261500667349 /* UIWindow+Hierarchy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWindow+Hierarchy.m"; sourceTree = "<group>"; };
9D0BB88518BB293D00667349 /* NSArray+Sort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Sort.h"; sourceTree = "<group>"; };
9D0BB88618BB293D00667349 /* NSArray+Sort.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Sort.m"; sourceTree = "<group>"; };
9D0BB88818BB46E000667349 /* IQBarButtonItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IQBarButtonItem.h; sourceTree = "<group>"; };
9D0BB88918BB46E000667349 /* IQBarButtonItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IQBarButtonItem.m; sourceTree = "<group>"; };
9D18420818C7015A00CF17FF /* IQTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IQTextView.h; sourceTree = "<group>"; };
9D18420918C7015A00CF17FF /* IQTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IQTextView.m; sourceTree = "<group>"; };
9D3FBD2A18C5A8D6006591CB /* original.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = original.jpg; sourceTree = "<group>"; };
@@ -236,8 +231,6 @@
9D0BB81D18BB18AA00667349 /* IQToolbar.m */,
9D18420818C7015A00CF17FF /* IQTextView.h */,
9D18420918C7015A00CF17FF /* IQTextView.m */,
9D0BB88818BB46E000667349 /* IQBarButtonItem.h */,
9D0BB88918BB46E000667349 /* IQBarButtonItem.m */,
9D8E5DA718BC7C61005695CF /* IQTitleBarButtonItem.h */,
9D8E5DA818BC7C61005695CF /* IQTitleBarButtonItem.m */,
9D0BB82218BB195300667349 /* IQSegmentedNextPrevious.h */,
@@ -339,7 +332,6 @@
9DF8A9E918BB5ED8008E93B8 /* IQKeyboardManagerConstants.h in Headers */,
9D18420A18C7015A00CF17FF /* IQTextView.h in Headers */,
9DF8A9EA18BB5ED8008E93B8 /* UIView+IQKeyboardToolbar.h in Headers */,
9DF8A9E518BB5ED8008E93B8 /* IQBarButtonItem.h in Headers */,
9D8E5DB018BC993F005695CF /* IQKeyboardManagerConstantsInternal.h in Headers */,
9DF8A9E718BB5ED8008E93B8 /* IQSegmentedNextPrevious.h in Headers */,
9DF8A9E318BB5ED8008E93B8 /* IQToolbar.h in Headers */,
@@ -507,7 +499,6 @@
9DFD564A18BCA765001007A2 /* IQTitleBarButtonItem.m in Sources */,
9DF8A9E218BB5ED8008E93B8 /* IQKeyboardManager.m in Sources */,
9DF8A9E418BB5ED8008E93B8 /* IQToolbar.m in Sources */,
9DF8A9E618BB5ED8008E93B8 /* IQBarButtonItem.m in Sources */,
9DF8A9E818BB5ED8008E93B8 /* IQSegmentedNextPrevious.m in Sources */,
9DF8A9EB18BB5ED8008E93B8 /* UIView+IQKeyboardToolbar.m in Sources */,
9DF8A9ED18BB5ED8008E93B8 /* UIView+Hierarchy.m in Sources */,
@@ -529,7 +520,6 @@
9D0BB81E18BB18AA00667349 /* IQToolbar.m in Sources */,
C07E20B51858FF54001699A8 /* ScrollViewController.m in Sources */,
C07E20BE18590085001699A8 /* WebViewController.m in Sources */,
9D0BB88A18BB46E000667349 /* IQBarButtonItem.m in Sources */,
C07E20C3185900BD001699A8 /* TextFieldViewController.m in Sources */,
9D8E5DAC18BC8E1D005695CF /* ViewController.m in Sources */,
9D18420B18C7015A00CF17FF /* IQTextView.m in Sources */,

View File

@@ -5,7 +5,6 @@
#import "AppDelegate.h"
#import "IQKeyboardManager.h"
@implementation AppDelegate
@@ -13,28 +12,6 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Enabling keyboard manager
[[IQKeyboardManager sharedManager] setEnable:YES];
[[IQKeyboardManager sharedManager] setKeyboardDistanceFromTextField:15];
//Enabling autoToolbar behaviour. If It is set to NO. You have to manually create IQToolbar for keyboard.
[[IQKeyboardManager sharedManager] setEnableAutoToolbar:YES];
//Setting toolbar behavious to IQAutoToolbarBySubviews. Set it to IQAutoToolbarByTag to manage previous/next according to UITextField's tag property in increasing order.
[[IQKeyboardManager sharedManager] setToolbarManageBehaviour:IQAutoToolbarBySubviews];
//Resign textField if touched outside of UITextField/UITextView.
[[IQKeyboardManager sharedManager] setShouldResignOnTouchOutside:YES];
//Giving permission to modify TextView's frame
[[IQKeyboardManager sharedManager] setCanAdjustTextView:YES];
//Show TextField placeholder texts on autoToolbar
[[IQKeyboardManager sharedManager] setShouldShowTextFieldPlaceholder:YES];
//Play system sounds on next/previous/done click.
[[IQKeyboardManager sharedManager] setShouldPlayInputClicks:YES];
return YES;
}

View File

@@ -122,24 +122,28 @@
<textField opaque="NO" clipsSubviews="YES" tag="101" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="2 Device Orientation support" minimumFontSize="17" id="Kdq-Kn-JCR">
<rect key="frame" x="20" y="45" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="tintColor" red="0.50196081399917603" green="0.50196081399917603" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" keyboardType="alphabet"/>
</textField>
<textField opaque="NO" clipsSubviews="YES" tag="102" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="3 UITextField Category for Keyboard" minimumFontSize="17" id="f9i-hv-EJj">
<rect key="frame" x="20" y="80" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="tintColor" red="0.0" green="0.50196081399917603" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" keyboardType="numbersAndPunctuation"/>
</textField>
<textField opaque="NO" clipsSubviews="YES" tag="103" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="4 Enable/Desable Keyboard Manager" minimumFontSize="17" id="n2x-Db-igr">
<rect key="frame" x="20" y="115" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="tintColor" red="0.50196081399917603" green="0.25098040699958801" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" keyboardType="URL"/>
</textField>
<textField opaque="NO" clipsSubviews="YES" tag="104" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="5 Enable/Disable Previous/Next buttons" minimumFontSize="17" id="z7r-JB-8xa">
<rect key="frame" x="20" y="149" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="tintColor" red="0.25098040699958801" green="0.50196081399917603" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
</textField>
@@ -192,6 +196,7 @@
<rect key="frame" x="20" y="184" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.0" green="0.50196081399917603" blue="0.50196081399917603" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
@@ -199,6 +204,7 @@
<rect key="frame" x="20" y="220" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.58756272810218979" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
@@ -206,6 +212,7 @@
<rect key="frame" x="20" y="255" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.0" green="0.0" blue="0.50196081399917603" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
@@ -213,6 +220,7 @@
<rect key="frame" x="20" y="290" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.50196081399917603" green="0.0" blue="0.25098040699958801" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
@@ -220,11 +228,13 @@
<rect key="frame" x="20" y="325" width="280" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
</subviews>
<color key="backgroundColor" red="0.94117653369999998" green="0.77647066119999997" blue="0.6549019814" alpha="1" colorSpace="deviceRGB"/>
<color key="tintColor" red="0.0" green="0.42548170270000002" blue="0.50196078430000002" alpha="1" colorSpace="calibratedRGB"/>
</view>
<navigationItem key="navigationItem" title="TextField Demo" id="s8z-5e-RBK">
<barButtonItem key="leftBarButtonItem" title="Enable" id="zb0-mt-wFi">
@@ -626,12 +636,13 @@
<rect key="frame" x="193" y="88" width="118" height="283"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<mutableString key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</mutableString>
<string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
</subviews>
<color key="backgroundColor" red="0.94117653369999998" green="0.77647066119999997" blue="0.6549019814" alpha="1" colorSpace="deviceRGB"/>
<color key="tintColor" red="0.0" green="0.42548170270000002" blue="0.50196078430000002" alpha="1" colorSpace="calibratedRGB"/>
</view>
<navigationItem key="navigationItem" title="Special Case" id="9gA-WE-hCe">
<barButtonItem key="rightBarButtonItem" title="Enable Adjust" id="i3m-8w-WCe">

View File

@@ -1,10 +1,6 @@
//
// SpecialCaseViewController.h
// KeyboardTextFieldDemo
//
// Created by Canopus 4 on 26/02/14.
// Copyright (c) 2014 Canopus. All rights reserved.
//
#import <UIKit/UIKit.h>

View File

@@ -1,10 +1,6 @@
//
// SpecialCaseViewController.m
// KeyboardTextFieldDemo
//
// Created by Canopus 4 on 26/02/14.
// Copyright (c) 2014 Canopus. All rights reserved.
//
#import "SpecialCaseViewController.h"

View File

@@ -4,7 +4,6 @@
#import "TextFieldViewController.h"
#import "IQKeyboardManager.h"
#import "IQSegmentedNextPrevious.h"
@implementation TextFieldViewController
@@ -30,8 +29,18 @@
[buttonPush setHidden:YES];
[buttonPresent setTitle:@"Dismiss" forState:UIControlStateNormal];
}
}
// Do any additional setup after loading the view from its nib.
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[IQKeyboardManager sharedManager] setShouldToolbarUsesTextFieldTintColor:YES];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[IQKeyboardManager sharedManager] setShouldToolbarUsesTextFieldTintColor:NO];
}
- (IBAction)popClicked:(id)sender

View File

@@ -44,6 +44,19 @@
}
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[IQKeyboardManager sharedManager] setShouldToolbarUsesTextFieldTintColor:YES];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[IQKeyboardManager sharedManager] setShouldToolbarUsesTextFieldTintColor:NO];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;