Updated IQKeyboardManager.Swift to match ObjC Version

This commit is contained in:
hackiftekhar
2015-01-08 22:55:44 +05:30
parent 761e4aaa55
commit 6368a19e1c
11 changed files with 5341 additions and 1513 deletions

View File

@@ -107,7 +107,7 @@ Class UISearchBarTextFieldClass; //UISearchBar
UIResponder *matchController = [self viewController];
while ([controllersHierarchy containsObject:matchController] == NO || matchController == nil)
while (matchController != nil && [controllersHierarchy containsObject:matchController] == NO)
{
do
{

View File

@@ -129,7 +129,7 @@ extern NSInteger const kIQPreviousNextButtonToolbarTag;
/*******************************************/
//TextView handling
//UITextView handling
/*!
@property canAdjustTextView
@@ -142,7 +142,7 @@ extern NSInteger const kIQPreviousNextButtonToolbarTag;
/*******************************************/
//Keyboard appearance overriding
//UIKeyboard appearance overriding
/*!
@property overrideKeyboardAppearance
@@ -162,7 +162,7 @@ extern NSInteger const kIQPreviousNextButtonToolbarTag;
/*******************************************/
//Resign handling
//UITextField/UITextView Resign handling
/*!
@property shouldResignOnTouchOutside
@@ -182,7 +182,7 @@ extern NSInteger const kIQPreviousNextButtonToolbarTag;
/*******************************************/
//Sound handling
//UISound handling
/*!
@property shouldPlayInputClicks
@@ -195,7 +195,7 @@ extern NSInteger const kIQPreviousNextButtonToolbarTag;
/*******************************************/
//Animation handling
//UIAnimation handling
/*!
@property shouldAdoptDefaultKeyboardAnimation

View File

@@ -398,8 +398,7 @@ void _IQShowLog(NSString *logString);
_keyboardManagerFlags.isKeyboardShowing = YES;
// Getting KeyWindow object.
UIWindow *keyWindow = [_textFieldView window];
if (keyWindow == nil) keyWindow = [self keyWindow];
UIWindow *keyWindow = [self keyWindow];
// Getting RootViewController. (Bug ID: #1, #4)
UIViewController *rootController = [_textFieldView topMostController];
@@ -1120,17 +1119,15 @@ void _IQShowLog(NSString *logString);
UIView *tableView = [_textFieldView superTableView];
if (tableView == nil) tableView = [_textFieldView superCollectionView];
NSArray *textFields = nil;
//If there is a tableView in view's hierarchy, then fetching all it's subview that responds. No sorting for tableView, it's by subView position.
if (tableView) // // (Enhancement ID: #22)
{
textFields = [tableView deepResponderViews];
return [tableView deepResponderViews];
}
//Otherwise fetching all the siblings
else
{
textFields = [_textFieldView responderSiblings];
NSArray *textFields = [_textFieldView responderSiblings];
//Sorting textFields according to behaviour
switch (_toolbarManageBehaviour)
@@ -1149,10 +1146,11 @@ void _IQShowLog(NSString *logString);
case IQAutoToolbarByPosition:
return [textFields sortedArrayByPosition];
break;
default:
return nil;
break;
}
}
return textFields;
}
#pragma mark previous/next/done functionality

View File

@@ -58,7 +58,7 @@ extension UIView {
func viewController()->UIViewController? {
var nextResponder: UIResponder! = self
do
{
nextResponder = nextResponder.nextResponder()!
@@ -71,7 +71,39 @@ extension UIView {
return nil
}
/*! @return Returns the topMost UIViewController object in hierarchy */
func topMostController()->UIViewController? {
var controllersHierarchy = [UIViewController]();
if var topController = self.window?.rootViewController {
controllersHierarchy.append(topController)
while (topController.presentedViewController != nil) {
topController = topController.presentedViewController!
controllersHierarchy.append(topController)
}
var matchController :UIResponder? = viewController()
while matchController != nil && contains(controllersHierarchy, (matchController as UIViewController)) == false {
do {
matchController = matchController?.nextResponder()
} while (matchController != nil && (matchController is UIViewController) == false)
}
return matchController as? UIViewController
} else {
return viewController()
}
}
/*! @return Returns the UITableView object if any found in view's upper hierarchy. */
func superTableView()->UITableView? {
@@ -491,7 +523,12 @@ extension CGRect {
}
}
extension NSObject {
public func _IQDescription() -> String {
return "<\(self) \(unsafeAddressOf(self))>"
}
}

View File

@@ -28,7 +28,7 @@ import UIKit
extension UIWindow {
/*! @return Returns the current Top Most ViewController in hierarchy. */
func topMostController()->UIViewController {
override func topMostController()->UIViewController? {
var topController = rootViewController
@@ -36,15 +36,15 @@ extension UIWindow {
topController = topController?.presentedViewController
}
return topController!
return topController
}
/*! @return Returns the topViewController in stack of topMostController. */
func currentViewController()->UIViewController {
func currentViewController()->UIViewController? {
var currentViewController = topMostController()
while (currentViewController is UINavigationController && (currentViewController as UINavigationController).topViewController != nil) {
while (currentViewController != nil && currentViewController is UINavigationController && (currentViewController as UINavigationController).topViewController != nil) {
currentViewController = (currentViewController as UINavigationController).topViewController
}

File diff suppressed because it is too large Load Diff

View File

@@ -73,7 +73,7 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
dictInfo[kIQTextField] = view
if (view.isKindOfClass(UITextField) == true)
if (view is UITextField == true)
{
var textField : UITextField = view as UITextField
@@ -91,7 +91,7 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
textField.delegate = self
}
else if (view.isKindOfClass(UITextView) == true)
else if (view is UITextView == true)
{
var textView : UITextView = view as UITextView
@@ -122,7 +122,7 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
{
var unwrappedDict = dict!
if (view.isKindOfClass(UITextField) == true)
if (view is UITextField == true)
{
var textField : UITextField = view as UITextField
@@ -137,7 +137,7 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
textField.delegate = unwrappedDict[kIQTextFieldDelegate] as UITextFieldDelegate?
}
else if (view.isKindOfClass(UITextView) == true)
else if (view is UITextView == true)
{
var textView : UITextView = view as UITextView
@@ -201,14 +201,14 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
var lastView: UIView? = textFields?.lastObject as? UIView
if (view.isKindOfClass(UITextField) == true)
if (view is UITextField == true)
{
var textField : UITextField = view as UITextField
//If it's the last textField in responder view, else next
textField.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType : UIReturnKeyType.Next
}
else if (view.isKindOfClass(UITextView) == true)
else if (view is UITextView == true)
{
var textView : UITextView = view as UITextView
@@ -283,7 +283,7 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
var view : AnyObject = infoDict[kIQTextField]!!
if (view.isKindOfClass(UITextField) == true)
if (view is UITextField == true)
{
var textField : UITextField = view as UITextField
@@ -298,7 +298,7 @@ class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDele
textField.delegate = infoDict[kIQTextFieldDelegate] as UITextFieldDelegate?
}
else if (view.isKindOfClass(UITextView) == true)
else if (view is UITextView == true)
{
var textView : UITextView = view as UITextView

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,73 @@
{\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}
{\list\listtemplateid5\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid401\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid5}
{\list\listtemplateid6\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid501\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid6}
{\list\listtemplateid7\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid601\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid7}
{\list\listtemplateid8\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid701\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid8}
{\list\listtemplateid9\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid801\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid9}
{\list\listtemplateid10\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid901\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid10}
{\list\listtemplateid11\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1001\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid11}
{\list\listtemplateid12\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid12}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}}
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls1\ilvl0
\f0\b\fs24 \cf0 {\listtext \'95 }IQKeyboardManager.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls2\ilvl0\cf0 {\listtext \'95 }IQKeyboardReturnKeyHandler.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls3\ilvl0\cf0 {\listtext \'95 }IQNSArray+Sort.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls4\ilvl0\cf0 {\listtext \'95 }IQUIView+Hierarchy.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0
\b0 1. Need to fix _IQDescription() method.
\b \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls5\ilvl0\cf0 {\listtext \'95 }IQUIWindow+Hierarchy.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls6\ilvl0\cf0 {\listtext \'95 }IQKeyboardManagerConstants.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls7\ilvl0\cf0 {\listtext \'95 }IQKeyboardManagerConstantsInternal.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls8\ilvl0\cf0 {\listtext \'95 }IQTextView.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls9\ilvl0\cf0 {\listtext \'95 }IQBarButtonItem.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls10\ilvl0\cf0 {\listtext \'95 }IQTitleBarButonItem.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls11\ilvl0\cf0 {\listtext \'95 }IQToolbar.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\pardirnatural
\ls12\ilvl0\cf0 {\listtext \'95 }IQUIView+IQKeyboardToolbar.swift\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\cf0 \
\
\
Adopt Modern If, while, for statements}