master a55dbfc936ce cached
158 files
1.1 MB
261.8k tokens
1 requests
Download .txt
Showing preview only (1,166K chars total). Download the full file or copy to clipboard to get everything.
Repository: hackiftekhar/IQKeyboardManager
Branch: master
Commit: a55dbfc936ce
Files: 158
Total size: 1.1 MB

Directory structure:
gitextract_498hdp8z/

├── .codeclimate.yml
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── copilot-instructions.md
│   └── pull_request_template.md
├── .gitignore
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cartfile
├── Cartfile.resolved
├── Documentation/
│   ├── MIGRATION GUIDE 1.0 TO 2.0.md
│   ├── MIGRATION GUIDE 2.0 TO 3.0.md
│   ├── MIGRATION GUIDE 3.0 TO 4.0.md
│   ├── MIGRATION GUIDE 4.0 TO 5.0.md
│   ├── MIGRATION GUIDE 5.0 TO 6.0.md
│   ├── MIGRATION GUIDE 6.0 TO 7.0.md
│   └── MIGRATION GUIDE 7.0 TO 8.0.md
├── Example/
│   ├── .swiftlint.yml
│   ├── IQKeyboardManagerSwiftExample/
│   │   ├── AppDelegate.swift
│   │   ├── Cell/
│   │   │   ├── ColorTableViewCell.swift
│   │   │   ├── ImageSwitchTableViewCell.swift
│   │   │   ├── NavigationTableViewCell.swift
│   │   │   ├── OptionTableViewCell.swift
│   │   │   ├── StepperTableViewCell.swift
│   │   │   ├── SwitchTableViewCell.swift
│   │   │   └── TextFieldTableViewCell.swift
│   │   ├── Extension/
│   │   │   └── UITableView+Extension.swift
│   │   ├── Resources/
│   │   │   ├── Base.lproj/
│   │   │   │   └── InfoPlist.strings
│   │   │   ├── IQKeyboardManagerSwiftExample.entitlements
│   │   │   ├── IQKeyboardManger-Swift-Bridging-Header.h
│   │   │   ├── Images.xcassets/
│   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Color/
│   │   │   │   │   ├── 171717.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 3C3C43.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 404040.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 535353.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 757677.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── A1A1A1.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── ABB0BA.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── D1D2D9.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── DEDEDE.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── EBEDF0.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── EBF0F7.colorset/
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── IQButtonBarArrowDown.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── logo_blue.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── logo_brown.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── logo_gray.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── original1.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   └── settings.imageset/
│   │   │   │       └── Contents.json
│   │   │   ├── Info.plist
│   │   │   └── ar.lproj/
│   │   │       └── InfoPlist.strings
│   │   ├── Storyboard/
│   │   │   ├── Base.lproj/
│   │   │   │   ├── FullScreenControllers.storyboard
│   │   │   │   ├── General.storyboard
│   │   │   │   ├── Launch.storyboard
│   │   │   │   ├── Main.storyboard
│   │   │   │   ├── ScrollView.storyboard
│   │   │   │   ├── Settings.storyboard
│   │   │   │   ├── SpecialCase.storyboard
│   │   │   │   └── TestCases.storyboard
│   │   │   └── ar.lproj/
│   │   │       ├── FullScreenControllers.strings
│   │   │       ├── General.strings
│   │   │       ├── Launch.strings
│   │   │       ├── Main.strings
│   │   │       ├── ScrollView.strings
│   │   │       ├── Settings.strings
│   │   │       └── SpecialCase.strings
│   │   └── ViewController/
│   │       ├── AutofillPasswordViewController.swift
│   │       ├── BaseTableViewController.swift
│   │       ├── BaseViewController.swift
│   │       ├── CollectionViewDemoController.swift
│   │       ├── CustomViewController.swift
│   │       ├── EdgesForExtendedLayoutViewController.swift
│   │       ├── EnableMode2000ViewController.swift
│   │       ├── ExampleTableViewController.swift
│   │       ├── ManualToolbarViewController.swift
│   │       ├── NavigationBarViewController.swift
│   │       ├── NavigationController.swift
│   │       ├── NonScrollTextView1979ViewController.swift
│   │       ├── OptionsViewController.swift
│   │       ├── PageViewController.swift
│   │       ├── PopoverViewController.swift
│   │       ├── RefreshLayoutViewController.swift
│   │       ├── ReloadLayout1892ViewController.swift
│   │       ├── SafeAreaViewController.swift
│   │       ├── ScrollViewController.swift
│   │       ├── SearchViewController.swift
│   │       ├── SettingsViewController+TableView.swift
│   │       ├── SettingsViewController.swift
│   │       ├── SpecialCaseViewController.swift
│   │       ├── StackViewController.swift
│   │       ├── TableViewContainerViewController.swift
│   │       ├── TableViewController.swift
│   │       ├── TableViewInContainerViewController.swift
│   │       ├── TestViewController.swift
│   │       ├── TextFieldHostingViewController.swift
│   │       ├── TextFieldView.swift
│   │       ├── TextFieldViewController.swift
│   │       ├── TextSelectionViewController.swift
│   │       ├── TextViewController.swift
│   │       ├── TextViewSpecialCaseViewController.swift
│   │       ├── ViewController.swift
│   │       └── WebViewController.swift
│   ├── IQKeyboardManagerSwiftExample.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── IQKeyboardManagerSwift.xcscheme
│   │           ├── IQKeyboardManagerSwiftExample.xcscheme
│   │           └── IQKeyboardManagerSwiftExampleExtension.xcscheme
│   ├── IQKeyboardManagerSwiftExample.xcworkspace/
│   │   └── contents.xcworkspacedata
│   ├── IQKeyboardManagerSwiftExampleExtension/
│   │   ├── ActionViewController.swift
│   │   ├── Base.lproj/
│   │   │   └── MainInterface.storyboard
│   │   ├── IQKeyboardManagerSwiftExampleExtension.entitlements
│   │   ├── Info.plist
│   │   └── Media.xcassets/
│   │       ├── Contents.json
│   │       └── TouchBarBezel.colorset/
│   │           └── Contents.json
│   └── Podfile
├── IQKeyboardManagerSwift/
│   ├── Appearance/
│   │   ├── IQKeyboardAppearanceConfiguration.swift
│   │   ├── IQKeyboardAppearanceManager+Internal.swift
│   │   ├── IQKeyboardAppearanceManager.swift
│   │   ├── IQKeyboardManager+Appearance.swift
│   │   └── IQKeyboardManager+Appearance_Deprecated.swift
│   ├── IQKeyboardManager/
│   │   ├── Configuration/
│   │   │   ├── IQActiveConfiguration.swift
│   │   │   ├── IQRootControllerConfiguration.swift
│   │   │   └── IQScrollViewConfiguration.swift
│   │   ├── Debug/
│   │   │   └── IQKeyboardManager+Debug.swift
│   │   ├── Deprecated/
│   │   │   └── IQKeyboardManager+Deprecated.swift
│   │   ├── IQKeyboardManager+ActiveConfiguration.swift
│   │   ├── IQKeyboardManager+Internal.swift
│   │   ├── IQKeyboardManager+Position.swift
│   │   ├── IQKeyboardManager.swift
│   │   ├── IQKeyboardManagerExtension/
│   │   │   ├── UIScrollView+IQKeyboardManagerExtension.swift
│   │   │   ├── UIScrollView+IQKeyboardManagerExtensionObjc.swift
│   │   │   ├── UIView+IQKeyboardManagerExtension.swift
│   │   │   └── UIView+IQKeyboardManagerExtensionObjc.swift
│   │   └── UIKitExtensions/
│   │       ├── UICollectionView+IndexPaths.swift
│   │       ├── UITableView+IndexPaths.swift
│   │       ├── UIView+Parent.swift
│   │       ├── UIView+ParentObjc.swift
│   │       └── UIViewController+ParentContainer.swift
│   ├── IQKeyboardManagerSwift.h
│   ├── IQKeyboardToolbarManager/
│   │   ├── IQKeyboardManager+ToolbarManager.swift
│   │   └── IQKeyboardManager+ToolbarManagerDeprecated.swift
│   ├── PrivacyInfo.xcprivacy
│   └── Resign/
│       ├── IQKeyboardManager+Resign.swift
│       ├── IQKeyboardManager+Resign_Deprecated.swift
│       ├── IQKeyboardResignHandler+Internal.swift
│       ├── IQKeyboardResignHandler.swift
│       └── UIKItExtensions/
│           ├── UIView+Resign.swift
│           └── UIView+ResignObjc.swift
├── IQKeyboardManagerSwift.podspec.json
├── LICENSE.md
├── Package.swift
├── README.md
└── SECURITY.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .codeclimate.yml
================================================
languages:
   Objective C: true
   Swift: true
exclude_paths:
- "Screenshot/*"


================================================
FILE: .gitattributes
================================================
*.m linguist-detectable=false


================================================
FILE: .github/FUNDING.yml
================================================
github: hackiftekhar
buy_me_a_coffee: hackiftekhar
custom: ["https://www.paypal.me/hackiftekhar"]


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Demo Project**
If applicable, add demo project.

### Versions
**Xcode:** x.x
**Mac OS:** xx.xx.x
**Simulator/Device:** xx.x
**Simulator/Device Name:** iPhone xx
**Library Version:** x.x.x

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/copilot-instructions.md
================================================
# IQKeyboardManager

IQKeyboardManager is an iOS library available in both Objective-C and Swift versions that provides automatic keyboard management functionality. The library includes comprehensive demo applications and supports CocoaPods, Carthage, and Swift Package Manager.

Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.

## Working Effectively

### Environment Requirements
- **CRITICAL**: This is an iOS-specific library that requires macOS with Xcode for full development
- Minimum Xcode 15 for Demo projects
- Minimum Xcode 13 for library development  
- iOS 13.0+ target for both Objective-C and Swift versions
- Swift 5.7+ supported

### Dependency Management and Setup
**ALWAYS** perform these steps in order for fresh repository setup:

1. **Install CocoaPods** (on macOS only):
   ```bash
   gem install cocoapods --user-install
   export PATH=$HOME/.local/share/gem/ruby/3.2.0/bin:$PATH
   ```

2. **Install dependencies** (macOS only - NEVER CANCEL - takes 5-10 minutes):
   ```bash
   cd /path/to/IQKeyboardManager
   pod install --repo-update
   ```
   Set timeout to 15+ minutes. This downloads all dependencies including SwiftLint.
   **NOTE**: `pod install` fails in sandboxed environments due to network restrictions.

3. **Verify Swift Package Manager dependencies** (works on both macOS and Linux - takes ~2 seconds):
   ```bash
   swift package resolve
   ```
   This resolves all SPM dependencies successfully even on Linux.

4. **Show dependency tree**:
   ```bash
   swift package show-dependencies
   ```

### Build and Test
**IMPORTANT**: Full builds require macOS with Xcode installed. Linux environments can only validate Swift Package Manager dependency resolution.

#### On macOS with Xcode:
1. **Build Demo Applications** (NEVER CANCEL - takes 10-15 minutes):
   ```bash
   cd /path/to/IQKeyboardManager
   xcodebuild -workspace Demo.xcworkspace -scheme DemoSwift -sdk iphonesimulator clean build
   xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator clean build
   ```
   Set timeout to 30+ minutes for each command.

2. **Run UI Tests** (NEVER CANCEL - takes 15-20 minutes):
   ```bash
   xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.0' test
   ```
   Set timeout to 45+ minutes.

#### On Linux (Limited Validation):
- **Dependency resolution works**: `swift package resolve` (takes ~2 seconds)
- **Dependency analysis works**: `swift package show-dependencies`
- **Building FAILS**: `swift build` fails with "no such module 'UIKit'" error (expected)
- **Cannot run simulators or UI tests** 
- **CocoaPods may fail** due to network restrictions in sandboxed environments

### Linting and Code Quality
1. **SwiftLint** (macOS only - installed via CocoaPods):
   ```bash
   Pods/SwiftLint/swiftlint
   ```
   **NOTE**: Not available on Linux or when CocoaPods installation fails.
   
2. **Check formatting** before commits (macOS only):
   ```bash
   Pods/SwiftLint/swiftlint --fix
   ```

3. **Manual code review** (any platform):
   - Review Swift files in `IQKeyboardManagerSwift/`
   - Check Objective-C files in `IQKeyboardManager/`
   - Verify integration examples in demo apps

## Validation

### Required Manual Testing Scenarios
**ALWAYS** test these scenarios after making changes to keyboard management:

1. **Basic Keyboard Management**:
   - Run DemoSwift app in iOS Simulator  
   - Navigate to "UITextField/UITextView example"
   - Tap text fields - verify keyboard shows/hides smoothly
   - Verify toolbar appears above keyboard with Previous/Next/Done buttons
   - Test scrolling behavior when keyboard appears
   - **Validate**: No text fields are obscured by keyboard

2. **Multi-Field Navigation**:
   - Use Previous/Next buttons in toolbar to navigate between text fields
   - Verify focus moves correctly between fields
   - Test with different keyboard types (number pad, email, etc.)
   - **Validate**: All fields are accessible via keyboard navigation

3. **Configuration Testing**:
   - Open Settings in demo app  
   - Toggle "Enable IQKeyboardManager" - verify keyboard behavior changes
   - Test different toolbar management options
   - Verify appearance customization works
   - **Validate**: Settings changes take effect immediately

4. **Both Platform Testing**:
   - Test identical scenarios in both DemoSwift and DemoObjC apps
   - Ensure Objective-C and Swift versions behave identically
   - **Validate**: Feature parity between both implementations

5. **Edge Cases**:
   - Test with collection views and table views containing text fields
   - Test with modal presentations and popovers
   - Test device rotation during text input
   - **Validate**: Keyboard management works in complex UI scenarios

### CI Validation
The project uses Travis CI (`.travis.yml`) with these validation steps:
```bash
xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator
xcodebuild -workspace Demo.xcworkspace -scheme DemoSwift -sdk iphonesimulator
```

**Always** run these commands locally before committing changes.

## Key Project Structure

### Library Files
- `IQKeyboardManager/` - Objective-C version (legacy)
- `IQKeyboardManagerSwift/` - Swift version (current)
  - `IQKeyboardManager/` - Core keyboard management
  - `Appearance/` - UI appearance customization
  - `Resign/` - Keyboard dismissal handling
  - `IQKeyboardToolbarManager/` - Toolbar management

### Demo Applications  
- `Demo/Swift_Demo/` - Swift demonstration app (45 Swift files)
- `Demo/Objective_C_Demo/` - Objective-C demonstration app (28 Objective-C files)
- `DemoObjCUITests/` - UI test suite

### Dependencies (Swift Package Manager)
The Swift version depends on separate modular libraries:
- IQKeyboardNotification (1.0.5+)
- IQTextInputViewNotification (1.0.8+) 
- IQKeyboardToolbarManager (1.1.3+)
- IQKeyboardReturnManager (1.0.5+)
- IQTextView (1.0.5+)

## Platform-Specific Instructions

### macOS Development
- Use Xcode 15+ for demo projects
- Open `Demo.xcworkspace` (NOT `Demo.xcodeproj`)
- Build times: 10-15 minutes for clean builds
- UI test runs: 15-20 minutes

### Linux Development (Limited)
- Can validate Swift Package Manager dependencies only
- Cannot build iOS targets or run simulators
- Use for dependency analysis and non-iOS-specific code review only

## Validated Commands and Timing

### Commands That Work on Any Platform
```bash
# Fast dependency resolution (~2 seconds)
swift package resolve

# Show dependency tree (~1 second)
swift package show-dependencies

# Basic file exploration and structure analysis
find . -name "*.swift" | wc -l  # Count Swift files
find . -name "*.m" | wc -l      # Count Objective-C files
```

### Commands That Work Only on macOS
```bash
# CocoaPods installation (5-10 minutes)
pod install --repo-update

# Xcode builds (10-15 minutes each)
xcodebuild -workspace Demo.xcworkspace -scheme DemoSwift -sdk iphonesimulator clean build
xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator clean build

# UI Tests (15-20 minutes)
xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator test
```

### Commands That Fail on Linux (Expected)
```bash
# Fails with "no such module 'UIKit'" error
swift build

# May fail due to network restrictions
pod install --repo-update
```

## Common Tasks

### Repository Structure Overview
```
IQKeyboardManager/
├── README.md (236 lines) - Main documentation
├── CONTRIBUTING.md (52 lines) - Contribution guidelines  
├── Package.swift - Swift Package Manager configuration
├── Podfile - CocoaPods configuration for demo apps
├── Demo.xcworkspace - Xcode workspace (use this, not .xcodeproj)
├── IQKeyboardManager/ - Objective-C version (legacy)
├── IQKeyboardManagerSwift/ - Swift version (current)
│   ├── IQKeyboardManager/ - Core keyboard management (~40KB main file)
│   │   ├── Configuration/ - Runtime configuration classes
│   │   ├── Debug/ - Debug utilities
│   │   ├── Deprecated/ - Backward compatibility  
│   │   ├── IQKeyboardManagerExtension/ - UIKit extensions
│   │   └── UIKitExtensions/ - Additional UIKit helpers
│   ├── Appearance/ - UI appearance customization
│   ├── Resign/ - Keyboard dismissal handling
│   └── IQKeyboardToolbarManager/ - Toolbar management
├── Demo/
│   ├── Swift_Demo/ - Swift demonstration app (45 Swift files)
│   │   ├── AppDelegate.swift - Shows basic integration
│   │   └── ViewController/ - Various usage examples
│   └── Objective_C_Demo/ - Objective-C demonstration app (28 .m files)
├── DemoObjCUITests/ - UI test suite
└── Documentation/ - Migration guides for major versions
```

### Key Files to Check After Changes
- `IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift` - Main library class
- `Demo/Swift_Demo/AppDelegate.swift` - Basic integration example
- `Demo/Objective_C_Demo/AppDelegate.m` - Objective-C integration example  
- Any files in `IQKeyboardManagerSwift/IQKeyboardManagerExtension/` when modifying UIKit behavior

### Basic Usage Integration
**Swift**:
```swift
import IQKeyboardManagerSwift

// In AppDelegate.swift
IQKeyboardManager.shared.isEnabled = true
IQKeyboardManager.shared.enableAutoToolbar = true
```

**Objective-C**:
```objc
#import <IQKeyboardManager/IQKeyboardManager.h>

// In AppDelegate.m
[[IQKeyboardManager sharedManager] setEnable:YES];
```

### Installation Methods
1. **CocoaPods**: `pod 'IQKeyboardManagerSwift'` or `pod 'IQKeyboardManager'`
2. **Swift Package Manager**: `https://github.com/hackiftekhar/IQKeyboardManager.git`
3. **Carthage**: `github "hackiftekhar/IQKeyboardManager"`

### Documentation Locations
- `Documentation/` - Migration guides for major versions
- `README.md` - Installation and basic usage
- `CONTRIBUTING.md` - Development guidelines
- Demo apps serve as comprehensive usage examples

## Troubleshooting

### Common Issues and Solutions

**"No such module 'UIKit'" error:**
- Expected on Linux - this is an iOS-only library
- Build and test only on macOS with Xcode

**CocoaPods installation fails:**
- Check internet connectivity and firewall restrictions
- Try `pod install --verbose` for detailed error messages  
- In sandboxed environments, network access may be limited

**Xcode build fails:**
- Ensure you're opening `Demo.xcworkspace`, not `Demo.xcodeproj`
- Clean build folder: `cmd+shift+k` in Xcode
- Reset simulators if needed

**UI tests fail:**
- Ensure iOS Simulator is available and running
- Check that test devices match requirements (iOS 13.0+)
- Verify simulator has sufficient disk space

## CRITICAL: Timeout and Cancellation Guidelines

### NEVER CANCEL These Commands
Set appropriate timeouts and wait for completion:

**Swift Package Manager (works on any platform):**
- `swift package resolve` - Takes ~2 seconds, set 60 second timeout
- `swift package show-dependencies` - Takes ~1 second, set 30 second timeout

**CocoaPods (macOS only):**  
- `pod install --repo-update` - Takes 5-10 minutes, set 15+ minute timeout
- NEVER CANCEL during "Installing" or "Generating Pods project" phases

**Xcode Builds (macOS only):**
- Clean builds: 10-15 minutes, set 30+ minute timeout
- Incremental builds: 2-5 minutes, set 15+ minute timeout
- UI test runs: 15-20 minutes, set 45+ minute timeout

**Expected Command Failures:**
- `swift build` on Linux - WILL FAIL with UIKit error (this is correct)
- `pod install` in restricted networks - MAY FAIL due to network access

### Build Command Examples with Timeouts
```bash
# Swift Package Manager (any platform)
timeout 60 swift package resolve

# CocoaPods (macOS only)  
timeout 900 pod install --repo-update  # 15 minutes

# Xcode builds (macOS only)
timeout 1800 xcodebuild -workspace Demo.xcworkspace -scheme DemoSwift -sdk iphonesimulator clean build  # 30 minutes
timeout 2700 xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator test  # 45 minutes
```

================================================
FILE: .github/pull_request_template.md
================================================
# Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

Fixes # (issue)

## Type of change

Please delete options that are not relevant.

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update


================================================
FILE: .gitignore
================================================
# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

#CocoaPods
Pods/

# Carthage
Carthage/Checkouts
Carthage/Build/

# MacOS X
.DS_Store
*.DS_Store
**/.DS_Store

#Swift Package Manager
.build
/.previous-build
*~
\#*
.\#*
*.xcscmblueprint
/default.profraw
Utilities/Docker/*.tar.gz
.swiftpm
Packages/
Package.pins
Package.resolved


================================================
FILE: .travis.yml
================================================
matrix:
  include:
    - language: objective-c
      branches:
          only:
              - master
      os: osx
      osx_image: xcode15
      xcode_workspace: Demo.xcworkspace
      xcode_project: Demo.xcodeproj
      xcode_scheme: DemoObjC
      before_install:
          - sudo gem install activesupport -v 4.2.6
          - rvm install 2.3.1
          - rvm use 2.3.1
          - sudo gem install cocoapods
      script:
        - xcodebuild -workspace Demo.xcworkspace -scheme DemoObjC -sdk iphonesimulator

    - language: swift
      branches:
          only:
              - master
      os: osx
      osx_image: xcode15
      xcode_workspace: Demo.xcworkspace
      xcode_project: Demo.xcodeproj
      xcode_scheme: DemoSwift
      before_install:
          - sudo gem install activesupport -v 4.2.6
          - rvm install 2.3.1
          - rvm use 2.3.1
          - sudo gem install cocoapods
      script:
        - xcodebuild -workspace Demo.xcworkspace -scheme DemoSwift -sdk iphonesimulator


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct

## 1. Purpose

A primary goal of IQKeyboardManager is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).

This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.

We invite all those who participate in IQKeyboardManager to help us create safe and positive experiences for everyone.

## 2. Open Source Citizenship

A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.

Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.

If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.

## 3. Expected Behavior

The following behaviors are expected and requested of all community members:

*   Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
*   Exercise consideration and respect in your speech and actions.
*   Attempt collaboration before conflict.
*   Refrain from demeaning, discriminatory, or harassing behavior and speech.
*   Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
*   Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.

## 4. Unacceptable Behavior

The following behaviors are considered harassment and are unacceptable within our community:

*   Violence, threats of violence or violent language directed against another person.
*   Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
*   Posting or displaying sexually explicit or violent material.
*   Posting or threatening to post other people’s personally identifying information ("doxing").
*   Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
*   Inappropriate photography or recording.
*   Inappropriate physical contact. You should have someone’s consent before touching them.
*   Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
*   Deliberate intimidation, stalking or following (online or in person).
*   Advocating for, or encouraging, any of the above behavior.
*   Sustained disruption of community events, including talks and presentations.

## 5. Consequences of Unacceptable Behavior

Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.

Anyone asked to stop unacceptable behavior is expected to comply immediately.

If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).

## 6. Reporting Guidelines

If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. 
hack.iftekhar@gmail.com



Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.

## 7. Addressing Grievances

If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Hackiftekhar with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.



## 8. Scope

We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues–online and in-person–as well as in all one-on-one communications pertaining to community business.

This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.

## 9. Contact info

hack.iftekhar@gmail.com

## 10. License and attribution

This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).

Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).

Retrieved on November 22, 2016 from [http://citizencodeofconduct.org/](http://citizencodeofconduct.org/)


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to IQKeyboardManager
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:

- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features

## We Develop with Github
We use github to host code, to track issues and feature requests, as well as accept pull requests.

## We Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests:

1. Fork the repo and create your branch from `master`.
2. If you've changed APIs, update the documentation.
3. Make sure your code lints.
4. Make same changes for Objective-C and Swift version of library.
4. Issue that pull request!

## Any contributions you make will be under the MIT Software License
In short, when you submit code changes, your submissions are understood to be under the same [MIT License](http://choosealicense.com/licenses/mit/) that covers the project. Feel free to contact the maintainers if that's a concern.

## Report bugs using Github's [issues](https://github.com/briandk/transcriptase-atom/issues)
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](); it's that easy!

## Write bug reports with detail, background, and sample code
[This is an example](http://stackoverflow.com/q/12488905/180626) of a bug report. Here's [another example from Craig Hockenberry](http://www.openradar.me/11905408).

**Great Bug Reports** tend to have:

- A quick summary and/or background
- Steps to reproduce
  - Be specific!
  - Give sample code if you can. [Example stackoverflow question](http://stackoverflow.com/q/12488905/180626) includes sample code that *anyone* with a base R setup can run to reproduce.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)

People *love* thorough bug reports. I'm not even kidding.

## Use a Consistent Coding Style
I'm again borrowing these from [Facebook's Guidelines](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)

* 2 spaces for indentation rather than tabs
* You can try running `npm run lint` for style unification

## License
By contributing, you agree that your contributions will be licensed under its MIT License.

## References
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)


================================================
FILE: Cartfile
================================================
github "hackiftekhar/IQKeyboardNotification"
github "hackiftekhar/IQTextInputViewNotification"
github "hackiftekhar/IQKeyboardToolbarManager"
github "hackiftekhar/IQKeyboardReturnManager"
github "hackiftekhar/IQTextView"

================================================
FILE: Cartfile.resolved
================================================
github "hackiftekhar/IQKeyboardCore" "1.0.7"
github "hackiftekhar/IQKeyboardNotification" "1.0.5"
github "hackiftekhar/IQKeyboardReturnManager" "1.0.5"
github "hackiftekhar/IQKeyboardToolbar" "1.1.1"
github "hackiftekhar/IQKeyboardToolbarManager" "1.1.1"
github "hackiftekhar/IQTextInputViewNotification" "1.0.8"
github "hackiftekhar/IQTextView" "1.0.5"


================================================
FILE: Documentation/MIGRATION GUIDE 1.0 TO 2.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 1.0 TO 2.0
==========================

### 1. Class Name changed

Old class name
```objc
@interface IQKeyBoardManager : NSObject {
    //...
}
```
New Class Name
```objc
@interface IQKeyboardManager : NSObject {
    //...
}
```

### 2. Function name changes

Old function and property names
```objc
+(void)installKeyboardManager;
+(void)setTextFieldDistanceFromKeyboard:(CGFloat)distance;
+(void)enableKeyboardManger;
+(void)disableKeyboardManager;
```
New function and property names
```objc
+ (IQKeyboardManager*)sharedManager;
@property(nonatomic, assign) CGFloat keyboardDistanceFromTextField;
@property(nonatomic, assign, getter = isEnabled) BOOL enable;
```

### 3. New features

#### IQKeyboardManager
```objc
@property(nonatomic, assign, getter = isEnableAutoToolbar) BOOL enableAutoToolbar;
@property(nonatomic, assign) IQAutoToolbarManageBehaviour toolbarManageBehaviour;
- (void)resignFirstResponder;
```

- Cocoapods support added

#### UIVIew Category
```objc
- (void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction;
```




================================================
FILE: Documentation/MIGRATION GUIDE 2.0 TO 3.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 2.0 TO 3.0
==========================

### 1. New features

#### IQKeyboardManager
```objc
@property(nonatomic, assign) BOOL shouldResignOnTouchOutside;
@property(nonatomic, assign) BOOL shouldShowTextFieldPlaceholder;
@property(nonatomic, assign) BOOL canAdjustTextView;
```

- Cocoapods support added

#### UIVIew Category
```objc
- (void)addDoneOnKeyboardWithTarget:(id)target action:(SEL)action shouldShowPlaceholder:(BOOL)showPlaceholder;
- (void)addCancelDoneOnKeyboardWithTarget:(id)target cancelAction:(SEL)cancelAction doneAction:(SEL)doneAction shouldShowPlaceholder:(BOOL)showPlaceholder;
- (void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction shouldShowPlaceholder:(BOOL)showPlaceholder;
```




================================================
FILE: Documentation/MIGRATION GUIDE 3.0 TO 4.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 3.0 TO 4.0
==========================

### 1. New features

New Class
```objc
@interface IQKeyboardReturnKeyHandler : NSObject {
    //...
}
-(nonnull instancetype)initWithViewController:(nullable UIViewController*)controller
@property(nullable, nonatomic, weak) id<UITextFieldDelegate,UITextViewDelegate> delegate;
@property(nonatomic, assign) UIReturnKeyType lastTextFieldReturnKeyType;
-(void)addTextFieldView:(nonnull UIView*)textFieldView;
-(void)removeTextFieldView:(nonnull UIView*)textFieldView;
-(void)addResponderFromView:(nonnull UIView*)view;
-(void)removeResponderFromView:(nonnull UIView*)view;
@end
```

New Class
```objc
@interface IQTextView : UITextView
@property(nullable, nonatomic,copy)   NSString    *placeholder;
@end
```

#### IQKeyboardManager
```objc
@property(nonatomic, assign) BOOL preventShowingBottomBlankSpace;
@property(nonatomic, assign) BOOL shouldToolbarUsesTextFieldTintColor;
@property(nullable, nonatomic, strong) UIColor *toolbarTintColor;
@property(nullable, nonatomic, strong) UIImage *toolbarDoneBarButtonItemImage;
@property(nullable, nonatomic, strong) NSString *toolbarDoneBarButtonItemText;
@property(nonatomic, assign) BOOL shouldShowTextFieldPlaceholder;
@property(nullable, nonatomic, strong) UIFont *placeholderFont;
@property(nonatomic, assign) BOOL shouldFixTextViewClip;
@property(nonatomic, assign) BOOL overrideKeyboardAppearance;
@property(nonatomic, assign) UIKeyboardAppearance keyboardAppearance;
@property (nonatomic, readonly) BOOL canGoPrevious;
@property (nonatomic, readonly) BOOL canGoNext;
@property(nonatomic, assign) BOOL shouldPlayInputClicks;
@property(nonatomic, assign) BOOL shouldAdoptDefaultKeyboardAnimation;
@property(nonatomic, assign) BOOL layoutIfNeededOnUpdate;
- (BOOL)goPrevious;
- (BOOL)goNext;
-(void)disableDistanceHandlingInViewControllerClass:(nonnull Class)disabledClass;
-(void)removeDisableDistanceHandlingInViewControllerClass:(nonnull Class)disabledClass;
-( NSSet* _Nonnull )disabledInViewControllerClasses;
-(void)disableToolbarInViewControllerClass:(nonnull Class)toolbarDisabledClass;
-(void)removeDisableToolbarInViewControllerClass:(nonnull Class)toolbarDisabledClass;
-( NSSet* _Nonnull )disabledToolbarInViewControllerClasses;
-(void)considerToolbarPreviousNextInViewClass:(nonnull Class)toolbarPreviousNextConsideredClass;
-(void)removeConsiderToolbarPreviousNextInViewClass:(nonnull Class)toolbarPreviousNextConsideredClass;
-(NSSet* _Nonnull)consideredToolbarPreviousNextViewClasses;
```

#### UIVIew Category
```objc
@property (assign, nonatomic) BOOL shouldHideTitle;
-(void)setCustomPreviousTarget:(nullable id)target action:(nullable SEL)action;
-(void)setCustomNextTarget:(nullable id)target action:(nullable SEL)action;
-(void)setCustomDoneTarget:(nullable id)target action:(nullable SEL)action;
- (void)addRightButtonOnKeyboardWithImage:(nullable UIImage*)image target:(nullable id)target action:(nullable SEL)action titleText:(nullable NSString*)titleText;
- (void)addCancelDoneOnKeyboardWithTarget:(nullable id)target cancelAction:(nullable SEL)cancelAction doneAction:(nullable SEL)doneAction titleText:(nullable NSString*)titleText;
- (void)addLeftRightOnKeyboardWithTarget:(nullable id)target leftButtonTitle:(nullable NSString*)leftButtonTitle rightButtonTitle:(nullable NSString*)rightButtonTitle leftButtonAction:(nullable SEL)leftButtonAction rightButtonAction:(nullable SEL)rightButtonAction titleText:(nullable NSString*)titleText;
- (void)addPreviousNextDoneOnKeyboardWithTarget:(nullable id)target previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction doneAction:(nullable SEL)doneAction titleText:(nullable NSString*)titleText;
- (void)addPreviousNextRightOnKeyboardWithTarget:(nullable id)target rightButtonTitle:(nullable NSString*)rightButtonTitle previousAction:(nullable SEL)previousAction nextAction:(nullable SEL)nextAction rightButtonAction:(nullable SEL)rightButtonAction titleText:(nullable NSString*)titleText;
```

#### UIVIew Category
```objc
@property (nonatomic, readonly) BOOL isAskingCanBecomeFirstResponder;
@property (nullable, nonatomic, readonly, strong) UIViewController *viewController;
@property (nullable, nonatomic, readonly, strong) UIViewController *topMostController;
-(nullable UIView*)superviewOfClassType:(nonnull Class)classType;
@property (nonatomic, getter=isSearchBarTextField, readonly) BOOL searchBarTextField;
@property (nonatomic, getter=isAlertViewTextField, readonly) BOOL alertViewTextField;
-(CGAffineTransform)convertTransformToView:(nullable UIView*)toView;
```

#### UIScrollView Category
```objc
@property(nonatomic, assign) BOOL shouldRestoreScrollViewContentOffset;
```

#### UIView Category (For UITextField and UITextView)
```objc
@property(nonatomic, assign) CGFloat keyboardDistanceFromTextField;
```

#### UIViewController Category
```objc
@property(nullable, nonatomic, strong) IBOutlet NSLayoutConstraint *IQLayoutGuideConstraint;
```

#### Swift version added


================================================
FILE: Documentation/MIGRATION GUIDE 4.0 TO 5.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 4.0 TO 5.0
==========================

### 1. Removed UIView Category features
```swift
public var isAskingCanBecomeFirstResponder: Bool // This is not necessary now
```

### 1. Removed IQKeyboardManager features
```swift
public var shouldFixTextViewClip = true // These are internally handled, so no more needed
public var canAdjustTextView = false // These are internally handled, so no more needed
public var shouldAdoptDefaultKeyboardAnimation = true   // This no longer needed
```

### 2. IQKeyboardManager functions

#### Old IQKeyboardManager functions
```swift
public func disableDistanceHandlingInViewControllerClass(disabledClass : AnyClass)
public func removeDisableDistanceHandlingInViewControllerClass(disabledClass : AnyClass)
public func disabledInViewControllerClassesString() -> Set<String>
public func disableToolbarInViewControllerClass(toolbarDisabledClass : AnyClass)
public func removeDisableToolbarInViewControllerClass(toolbarDisabledClass : AnyClass)
public func disabledToolbarInViewControllerClassesString() -> Set<String>
public func considerToolbarPreviousNextInViewClass(toolbarPreviousNextConsideredClass : AnyClass)
public func removeConsiderToolbarPreviousNextInViewClass(toolbarPreviousNextConsideredClass : AnyClass)
public func consideredToolbarPreviousNextViewClassesString() -> Set<String>
```
#### New IQKeyboardManager functions
```swift
open var disabledDistanceHandlingClasses = [UIViewController.Type]()
open var enabledDistanceHandlingClasses = [UIViewController.Type]()
open var disabledToolbarClasses = [UIViewController.Type]()
open var enabledToolbarClasses = [UIViewController.Type]()
open var toolbarPreviousNextAllowedClasses = [UIView.Type]()
open var disabledTouchResignedClasses = [UIViewController.Type]()
open var enabledTouchResignedClasses = [UIViewController.Type]()
open var touchResignedGestureIgnoreClasses = [UIView.Type]()
```

### 3. UIView Category functions

#### Old UIView Category functions
```swift
public var shouldHideTitle: Bool?
public var drawingPlaceholderText: String?
public func setCustomPreviousTarget(target: AnyObject?, selector: Selector?)
public func setCustomNextTarget(target: AnyObject?, selector: Selector?)
```

#### New UIView Category functions
```swift
public var shouldHidePlaceholderText: Bool
public var keyboardToolbar: IQToolbar
public var shouldHideToolbarPlaceholder: Bool
public var drawingToolbarPlaceholder: String?
open func setTarget(_ target: AnyObject?, action: Selector?) // in IQBarButtonItem
```

### 4. New features

#### IQKeyboardManager
```swift
open var toolbarBarTintColor : UIColor?
open var keyboardShowing: Bool
open var movedDistance: CGFloat
open var enableDebugging = false
open var shouldFixInteractivePopGestureRecognizer = true
open var previousNextDisplayMode = IQPreviousNextDisplayMode.Default
open func reloadInputViews()
open func reloadLayoutIfNeeded()
open func registerAllNotifications()
open func registerTextFieldViewClass(_ aClass: UIView.Type, didBeginEditingNotificationName : String, didEndEditingNotificationName : String)
open func unregisterTextFieldViewClass(_ aClass: UIView.Type, didBeginEditingNotificationName : String, didEndEditingNotificationName : String)
```

#### UIScrollView Category
```swift
public var shouldIgnoreScrollingAdjustment: Bool
```



================================================
FILE: Documentation/MIGRATION GUIDE 5.0 TO 6.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 5.0 TO 6.0
==========================

### 1. IQKeyboardManager functions

#### Old IQKeyboardManager functions
```swift
open class func sharedManager() -> IQKeyboardManager
@objc public class var shared: IQKeyboardManager
```
#### New IQKeyboardManager functions
```swift
```

### 2. UIView Category functions

#### Old UIView Category functions
```swift
public func viewController()->UIViewController?
```

#### New UIView Category functions
```swift
@objc public func viewContainingController()->UIViewController?
```

### 3. New features

#### IQKeyboardManager
```swift
@objc public var placeholderColor: UIColor?
@objc public var placeholderButtonColor: UIColor?
@objc public var canAdjustAdditionalSafeAreaInsets = false
```

#### UIView Category functions
```swift
@objc public var ignoreSwitchingByNextPrevious: Bool
@objc public var shouldResignOnTouchOutsideMode: IQEnableMode
@objc public func parentContainerViewController()->UIViewController?
```


================================================
FILE: Documentation/MIGRATION GUIDE 6.0 TO 7.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 6.0 TO 7.0
==========================

### 1. Removed IQKeyboardManager functions
```swift
@objc public var preventShowingBottomBlankSpace = true
@objc public var shouldFixInteractivePopGestureRecognizer = true
@objc public var canAdjustAdditionalSafeAreaInsets = false
@objc func registerTextFieldViewClass(_ aClass: UIView.Type,
                                      didBeginEditingNotificationName: String,
                                      didEndEditingNotificationName: String)
@objc func unregisterTextFieldViewClass(_ aClass: UIView.Type,
                                        didBeginEditingNotificationName: String,
                                        didEndEditingNotificationName: String)                                          
```

### 2. Removed UIViewController functions
```swift
@IBOutlet @objc public var IQLayoutGuideConstraint: NSLayoutConstraint?
```

### 3. IQKeyboardManager functions

#### Old IQKeyboardManager functions
```swift
@objc var shouldResignOnTouchOutside: Bool
@objc var shouldPlayInputClicks: Bool

@objc var toolbarManageBehaviour: IQAutoToolbarManageBehavior
@objc var shouldToolbarUsesTextFieldTintColor: Bool
@objc var toolbarTintColor: UIColor?
@objc var toolbarBarTintColor: UIColor?
@objc var previousNextDisplayMode: IQPreviousNextDisplayMode

@objc var toolbarPreviousBarButtonItemImage: UIImage?
@objc var toolbarPreviousBarButtonItemText: String?
@objc var toolbarPreviousBarButtonItemAccessibilityLabel: String?

@objc var toolbarNextBarButtonItemImage: UIImage?
@objc var toolbarNextBarButtonItemText: String?
@objc var toolbarNextBarButtonItemAccessibilityLabel: String?

@objc var toolbarDoneBarButtonItemImage: UIImage?
@objc var toolbarDoneBarButtonItemText: String?
@objc var toolbarDoneBarButtonItemAccessibilityLabel: String?

@objc var toolbarTitlBarButtonItemAccessibilityLabel: String?
@objc var shouldShowToolbarPlaceholder: Bool
@objc var placeholderFont: UIFont?
@objc var placeholderColor: UIColor?
@objc var placeholderButtonColor: UIColor?

@objc var overrideKeyboardAppearance: Bool
@objc var keyboardAppearance: UIKeyboardAppearance

@objc func registerKeyboardSizeChange(identifier: AnyHashable, sizeHandler: @escaping SizeBlock)
@objc func unregisterKeyboardSizeChange(identifier: AnyHashable) {}   
@objc var keyboardShowing: Bool
@objc var keyboardFrame: CGRect
```
#### New IQKeyboardManager functions
```swift
@objc public var resignOnTouchOutside: Bool
@objc public var playInputClicks: Bool

@objc public let toolbarConfiguration: IQToolbarConfiguration = .init()
/*
toolbarConfiguration.manageBehavior
toolbarConfiguration.useTextFieldTintColor
toolbarConfiguration.tintColor
toolbarConfiguration.barTintColor
toolbarConfiguration.previousNextDisplayMode
*/

@objc public var previousBarButtonConfiguration: IQBarButtonItemConfiguration?
/*
toolbarConfiguration.previousBarButtonConfiguration.image
toolbarConfiguration.previousBarButtonConfiguration.title
toolbarConfiguration.previousBarButtonConfiguration.accessibilityLabel    
*/

@objc public var nextBarButtonConfiguration: IQBarButtonItemConfiguration?
/*
toolbarConfiguration.nextBarButtonConfiguration.image
toolbarConfiguration.nextBarButtonConfiguration.title
toolbarConfiguration.nextBarButtonConfiguration.accessibilityLabel    
*/

@objc public var doneBarButtonConfiguration: IQBarButtonItemConfiguration?
/*
toolbarConfiguration.doneBarButtonConfiguration.image
toolbarConfiguration.doneBarButtonConfiguration.title
toolbarConfiguration.doneBarButtonConfiguration.accessibilityLabel    
*/

@objc public let placeholderConfiguration: IQToolbarPlaceholderConfiguration
/*
toolbarConfiguration.placeholderConfiguration.accessibilityLabel
toolbarConfiguration.placeholderConfiguration.showPlaceholder
toolbarConfiguration.placeholderConfiguration.font
toolbarConfiguration.placeholderConfiguration.color
toolbarConfiguration.placeholderConfiguration.buttonColor
*/

@objc public let keyboardConfiguration: IQKeyboardConfiguration
/*
keyboardConfiguration.overrideAppearance
keyboardConfiguration.appearance
*/

class IQKeyboardListener {
    public var keyboardShowing: Bool
    public var frame: CGRect
    public init()
    public func registerSizeChange(identifier: AnyHashable, changeHandler: @escaping SizeCompletion)
    public func unregisterSizeChange(identifier: AnyHashable)
}
}
```

### 1. UIScrollView extension functions

#### Old functions
```swift
var shouldIgnoreScrollingAdjustment: Bool
var shouldIgnoreContentInsetAdjustment: Bool
var shouldRestoreScrollViewContentOffset: Bool
```
#### New functions
```swift
var iq: IQKeyboardManagerWrapper<UIScrollView>
/*
iq.ignoreScrollingAdjustment
iq.ignoreContentInsetAdjustment
iq.restoreContentOffset
*/
```

### 1. UIView extension functions

#### Old functions
```swift
var keyboardDistanceFromTextField: CGFloat
var ignoreSwitchingByNextPrevious: Bool
var enableMode: IQEnableMode
var shouldResignOnTouchOutsideMode: IQEnableMode
```
#### New functions
```swift
var iq: IQKeyboardManagerWrapper<UIView>
/*
iq.distanceFromKeyboard
iq.ignoreSwitchingByNextPrevious
iq.enableMode
iq.resignOnTouchOutsideMode
*/
```


### 2. UIView extension functions

#### Old UIView extension functions
```swift
func viewContainingController() -> UIViewController?
func topMostController() -> UIViewController?
func parentContainerViewController() -> UIViewController?
func superviewOfClassType(_ classType: UIView.Type, belowView: UIView? = nil) -> UIView?
```

#### New UIView extension functions
```swift
var iq: IQKeyboardManagerWrapper<UIView>
/*
iq.viewContainingController()
iq.topMostController()
iq.parentContainerViewController()
iq.superviewOf(type:belowView:)
*/
```

### 2. UIView extension functions

#### Old UIView extension functions
```swift
var keyboardToolbar: IQToolbar
var shouldHideToolbarPlaceholder: Bool
var toolbarPlaceholder: String?
var drawingToolbarPlaceholder: String?
func addKeyboardToolbarWithTarget(target: AnyObject?,
                                  titleText: String?,
                                  titleAccessibilityLabel: String? = nil,
                                  rightBarButtonConfiguration: IQBarButtonItemConfiguration?,
                                  previousBarButtonConfiguration: IQBarButtonItemConfiguration? = nil,
                                  nextBarButtonConfiguration: IQBarButtonItemConfiguration? = nil)
```

#### New UIView extension functions
```swift
var iq: IQKeyboardManagerWrapper<UIView>
/*
iq.toolbar
iq.hidePlaceholder
iq.placeholder
iq.drawingPlaceholder
iq.addToolbar(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)
*/
```


### 2. UIViewController extension functions

#### Old UIViewController extension functions
```swift
open func parentIQContainerViewController() -> UIViewController?
```

#### New UIViewController extension functions
```swift
open func iq_parentContainerViewController() -> UIViewController?
```

### 3. New features

#### IQKeyboardManager
```swift
```

#### UIView Category functions
```swift
@property(nonatomic, assign) BOOL shouldIgnoreContentInsetAdjustment;
@property(nonatomic, assign) IQEnableMode enableMode;
```
#### UIViewController functions
```swift
-(nullable UIViewController*)parentIQContainerViewController;
```


================================================
FILE: Documentation/MIGRATION GUIDE 7.0 TO 8.0.md
================================================
IQKeyboardManager MIGRATION GUIDE 7.0 TO 8.0
==========================

### Keyboard Toolbar
`IQKeyboardManager.shared.enableAutoToolbar` is now default to `false`. Actually it's now part of the `IQKeyboardToolbarManager` library. Due to this change, you may not see the toolbar over keyboard.
- **Solution 1:** Either Add `IQKeyboardManager.shared.enableAutoToolbar = true` in your app delegate
- **Solution 2:** Or Use `IQKeyboardToolbarManager` directly to enable keyboard toolbar using `IQKeyboardToolbarManager.shared.isEnabled = true`

### 1. Features removed (Moved to their own independent libraries)
- All features related to toolbar handling has been moved to `IQKeyboardToolbarManager` [Link](https://github.com/hackiftekhar/IQKeyboardToolbarManager)
- `IQKeyboardListener` [Link](https://github.com/hackiftekhar/IQKeyboardNotification) (Renamed to `IQKeyboardNotification`)
- `IQTextFieldViewListener` [Link](https://github.com/hackiftekhar/IQTextInputViewNotification) (Renamed to `IQTextInputViewNotification`)
- `IQReturnKeyHandler` [Link](https://github.com/hackiftekhar/IQKeyboardReturnManager) (Renamed to `IQKeyboardReturnManager`)
- `IQKeyboardToolbar` [Link](https://github.com/hackiftekhar/IQKeyboardToolbar)
- `IQTextView` [Link](https://github.com/hackiftekhar/IQTextView)

### 2. Features moved to IQKeyboardToolbarManager
- `IQPreviousNextView` class (Renamed to `IQDeepResponderContainerView`)
    If you are using `IQPreviousNextView` in your storyboard then you have to change the class to `IQDeepResponderContainerView` and also have to change the module to `IQKeyboardToolbarManager`.
- `IQToolbarConfiguration` class (Renamed to `IQKeyboardToolbarConfiguration`)
- `IQToolbarPlaceholderConfiguration` class (Renamed to `IQKeyboardToolbarPlaceholderConfiguration`)
- `public enum IQAutoToolbarManageBehavior: Int`
- `public enum IQPreviousNextDisplayMode: Int`
- `IQBarButtonItemConfiguration` class

```swift
// These were part of IQKeyboardManager
var enableAutoToolbar: Bool (Renamed to `isEnabled`)
var toolbarConfiguration: IQToolbarConfiguration
var playInputClicks: Bool
var disabledToolbarClasses: [UIViewController.Type]
var enabledToolbarClasses: [UIViewController.Type]
var deepResponderAllowedContainerClasses: [UIView.Type]
var canGoPrevious: Bool
var canGoNext: Bool
func goPrevious() -> Bool
func goNext() -> Bool
func reloadInputViews()
```
```swift
// UITextField/UITextView extensions, This can be used like textField.iq.ignoreSwitchingByNextPrevious = true
var ignoreSwitchingByNextPrevious: Bool
```

### 3. Features moved to IQKeyboardToolbar
- `IQToolbar` class (Renamed to `IQKeyboardToolbar`)
- `IQToolbarConfiguration` class (Renamed to `IQKeyboardToolbarConfiguration`)
- `IQToolbarPlaceholderConfiguration` class (Renamed to `IQKeyboardToolbarPlaceholderConfiguration`)
- `IQBarButtonItemConfiguration` class
- `IQTitleBarButtonItem` class
- `IQBarButtonItem` class
- `IQInvocation` class
- `IQPlaceholderable` protocol

```swift
// UITextField/UITextView extensions, This can be used like textField.iq.hidePlaceholder = true
var toolbar: IQToolbar
var hidePlaceholder: Bool
var placeholder: String?
var drawingPlaceholder: String?
func addToolbar(target: AnyObject?,
                    previousConfiguration: IQBarButtonItemConfiguration? = nil,
                    nextConfiguration: IQBarButtonItemConfiguration? = nil,
                    rightConfiguration: IQBarButtonItemConfiguration? = nil,
                    title: String?,
                    titleAccessibilityLabel: String? = nil)
func addDone(...)
func addRightButton(...)
func addRightLeft(...)
func addPreviousNextRight(...)
func addPreviousNextDone(...)
```


### 1. Features moved to subspecs (Cocoapods)
- `IQKeyboardManagerSwift/Appearance`
```swift
// IQKeyboardManager
public var overrideAppearance: Bool
public var appearance: UIKeyboardAppearance
```
- `IQKeyboardManagerSwift/IQKeyboardReturnManager`
```swift
// https://github.com/hackiftekhar/IQKeyboardReturnManager
- This subspec add `IQKeyboardReturnManager` as dependency for easier migration.
```
- `IQKeyboardManagerSwift/IQKeyboardToolbarManager`
```swift
// https://github.com/hackiftekhar/IQKeyboardToolbarManager
- This subspec add `IQKeyboardToolbarManager` as dependency for easier migration.
```
- `IQKeyboardManagerSwift/IQTextView`
```swift
// https://github.com/hackiftekhar/IQTextView
- This subspec add `IQTextView` as dependency for easier migration.
```
- `IQKeyboardManagerSwift/Resign`
```swift
// IQKeyboardManager
var resignOnTouchOutside: Bool
var resignGesture: UITapGestureRecognizer
var disabledTouchResignedClasses: [UIViewController.Type]
var enabledTouchResignedClasses: [UIViewController.Type]
var touchResignedGestureIgnoreClasses: [UIView.Type]
func resignFirstResponder() -> Bool
```
```swift
// UITextField/UITextView extensions, This can be used like textField.iq.resignOnTouchOutsideMode = .default
var resignOnTouchOutsideMode: IQEnableMode
```


================================================
FILE: Example/.swiftlint.yml
================================================

excluded:
  - Pods


================================================
FILE: Example/IQKeyboardManagerSwiftExample/AppDelegate.swift
================================================
//
//  AppDelegate.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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
import IQKeyboardManagerSwift
import IQKeyboardToolbarManager

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        window?.backgroundColor = UIColor.white
        IQKeyboardManager.shared.isEnabled = true
        IQKeyboardManager.shared.isDebuggingEnabled = true
        IQKeyboardToolbarManager.shared.isEnabled = true
        IQKeyboardToolbarManager.shared.isDebuggingEnabled = true
        return true
    }

    func applicationWillResignActive(_ application: UIApplication) {
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
    }

    func applicationWillTerminate(_ application: UIApplication) {
    }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/ColorTableViewCell.swift
================================================
//
//  ColorTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class ColorTableViewCell: UITableViewCell {

    @IBOutlet var labelTitle: UILabel!
    @IBOutlet var labelSubtitle: UILabel!
    @IBOutlet var selectedColorView: UIView!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/ImageSwitchTableViewCell.swift
================================================
//
//  ImageSwitchTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class ImageSwitchTableViewCell: SwitchTableViewCell {

    @IBOutlet var arrowImageView: UIImageView!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/NavigationTableViewCell.swift
================================================
//
//  NavigationTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class NavigationTableViewCell: UITableViewCell {

    @IBOutlet var labelTitle: UILabel!
    @IBOutlet var labelSubtitle: UILabel!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/OptionTableViewCell.swift
================================================
//
//  OptionTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class OptionTableViewCell: UITableViewCell {

    @IBOutlet var labelOption: UILabel!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/StepperTableViewCell.swift
================================================
//
//  StepperTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class StepperTableViewCell: UITableViewCell {

    @IBOutlet var labelTitle: UILabel!
    @IBOutlet var labelSubtitle: UILabel!
    @IBOutlet var stepper: UIStepper!
    @IBOutlet var labelStepperValue: UILabel!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/SwitchTableViewCell.swift
================================================
//
//  SwitchTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class SwitchTableViewCell: UITableViewCell {

    @IBOutlet var labelTitle: UILabel!
    @IBOutlet var labelSubtitle: UILabel!
    @IBOutlet var switchEnable: UISwitch!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Cell/TextFieldTableViewCell.swift
================================================
//
//  TextFieldTableViewCell.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

class TextFieldTableViewCell: UITableViewCell {

    @IBOutlet var labelTitle: UILabel!
    @IBOutlet var labelSubtitle: UILabel!
    @IBOutlet var textField: UITextField!
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Extension/UITableView+Extension.swift
================================================
//
//  UITableView+Extension.swift
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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

extension UITableView {
    func dequeueCell<T: UITableViewCell>(_: T.Type, for indexPath: IndexPath) -> T {
        let identifier: String = String(describing: T.self)
        guard let cell = dequeueReusableCell(withIdentifier: identifier, for: indexPath) as? T else {
            fatalError("Could not dequeue \(T.self)")
        }

        return cell
    }

    func dequeueHeaderFooter<T: UITableViewHeaderFooterView>(_: T.Type) -> T {
        let identifier: String = String(describing: T.self)
        if let view = dequeueReusableHeaderFooterView(withIdentifier: identifier) as? T {
            return view
        } else {
            return T(reuseIdentifier: identifier)
        }
    }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Base.lproj/InfoPlist.strings
================================================
/* Localized versions of Info.plist keys */



================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/IQKeyboardManagerSwiftExample.entitlements
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.security.app-sandbox</key>
	<true/>
	<key>com.apple.security.network.client</key>
	<true/>
</dict>
</plist>


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/IQKeyboardManger-Swift-Bridging-Header.h
================================================
//
//  IQKeyboardManger-Swift-Bridging-Header.h
//  https://github.com/hackiftekhar/IQKeyboardManager
//  Copyright (c) 2013-24 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.

#ifndef IQKeyboardManager_IQKeyboardManger_Swift_Bridging_Header_h_h
#define IQKeyboardManager_IQKeyboardManger_Swift_Bridging_Header_h_h

#endif


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "logo_blue.jpeg",
      "idiom" : "universal",
      "platform" : "ios",
      "size" : "1024x1024"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/171717.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0x17",
          "green" : "0x17",
          "red" : "0x17"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/3C3C43.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0x43",
          "green" : "0x3C",
          "red" : "0x3C"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/404040.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0x40",
          "green" : "0x40",
          "red" : "0x40"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/535353.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0x53",
          "green" : "0x53",
          "red" : "0x53"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/757677.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0x77",
          "green" : "0x76",
          "red" : "0x75"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/A1A1A1.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0xA1",
          "green" : "0xA1",
          "red" : "0xA1"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/ABB0BA.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0xBA",
          "green" : "0xB0",
          "red" : "0xAB"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/D1D2D9.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0xD9",
          "green" : "0xD2",
          "red" : "0xD1"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/DEDEDE.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0xDE",
          "green" : "0xDE",
          "red" : "0xDE"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/EBEDF0.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0xF0",
          "green" : "0xED",
          "red" : "0xEB"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/EBF0F7.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0xF7",
          "green" : "0xF0",
          "red" : "0xEB"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/IQButtonBarArrowDown.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "IQButtonBarArrowDown@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "IQButtonBarArrowDown@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/logo_blue.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "logo_blue.jpeg",
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/logo_brown.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "logo_brown.jpeg",
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/logo_gray.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "logo_gray.png",
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/original1.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "original1.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/settings.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "settings@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>IQKB Swift</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(MARKETING_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>Launch</string>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UIStatusBarHidden</key>
	<false/>
	<key>UIStatusBarStyle</key>
	<string></string>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
	</array>
	<key>UIUserInterfaceStyle</key>
	<string>Light</string>
	<key>UIViewControllerBasedStatusBarAppearance</key>
	<false/>
</dict>
</plist>


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Resources/ar.lproj/InfoPlist.strings
================================================
/* Localized versions of Info.plist keys */



================================================
FILE: Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/FullScreenControllers.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="24127" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina4_7" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24063"/>
        <capability name="Named colors" minToolsVersion="9.0"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--TextViewController-->
        <scene sceneID="MpH-Uf-nZC">
            <objects>
                <viewController storyboardIdentifier="TextViewController" automaticallyAdjustsScrollViewInsets="NO" id="P7P-UN-ggT" customClass="TextViewController" customModule="IQKeyboardManagerSwiftExampleSwift" customModuleProvider="target" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="BLa-72-1s6">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="50p-P4-9dL">
                                <rect key="frame" x="0.0" y="20" width="375" height="647"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="lPX-qe-xgb"/>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="50p-P4-9dL" firstAttribute="leading" secondItem="lPX-qe-xgb" secondAttribute="leading" id="6LD-6S-lZE"/>
                            <constraint firstItem="lPX-qe-xgb" firstAttribute="bottom" secondItem="50p-P4-9dL" secondAttribute="bottom" id="Lqc-NC-Mvm"/>
                            <constraint firstItem="50p-P4-9dL" firstAttribute="top" secondItem="lPX-qe-xgb" secondAttribute="top" id="fZP-US-l4g"/>
                            <constraint firstItem="lPX-qe-xgb" firstAttribute="trailing" secondItem="50p-P4-9dL" secondAttribute="trailing" id="xLZ-cs-lb0"/>
                        </constraints>
                    </view>
                    <navigationItem key="navigationItem" title="TextViewController" id="WU4-It-O6g"/>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="XAg-W4-HTJ" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="3529" y="218"/>
        </scene>
        <!--UISearchController-->
        <scene sceneID="YrW-53-U1r">
            <objects>
                <tableViewController storyboardIdentifier="SearchViewController" id="MeU-Ah-guT" customClass="SearchViewController" customModule="IQKeyboardManagerSwiftExampleSwift" customModuleProvider="target" sceneMemberID="viewController">
                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="zLu-Df-8RT">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <connections>
                            <outlet property="dataSource" destination="MeU-Ah-guT" id="YWF-A3-nXh"/>
                            <outlet property="delegate" destination="MeU-Ah-guT" id="vRY-e8-2bB"/>
                        </connections>
                    </tableView>
                    <navigationItem key="navigationItem" title="UISearchController" id="4DZ-MZ-qyC"/>
                </tableViewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="W5m-gW-u7K" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="4210" y="216"/>
        </scene>
    </scenes>
    <resources>
        <namedColor name="EBEDF0">
            <color red="0.92156862745098034" green="0.92941176470588238" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="labelColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/General.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina5_9" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
        <capability name="Named colors" minToolsVersion="9.0"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--TextField Demo-->
        <scene sceneID="kAr-5b-4Sn">
            <objects>
                <viewController storyboardIdentifier="TextFieldViewController" id="csO-qF-Ohn" customClass="TextFieldViewController" customModule="DemoSwift" customModuleProvider="target" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="i84-jm-CzI" customClass="IQDeepResponderContainerView" customModule="IQKeyboardToolbarManager">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                        <subviews>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="07C-Jx-O92">
                                <rect key="frame" x="0.0" y="50" width="375" height="91"/>
                                <subviews>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Easiest integration" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="Rr4-Yx-SRn">
                                        <rect key="frame" x="20" y="28.666666666666671" width="335" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.0080750879139513537" green="0.47692340353260865" blue="0.083980094677913134" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                </subviews>
                                <constraints>
                                    <constraint firstAttribute="trailing" secondItem="Rr4-Yx-SRn" secondAttribute="trailing" constant="20" id="bAd-7H-DYl"/>
                                    <constraint firstItem="Rr4-Yx-SRn" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" constant="20" id="ceV-9C-R7f"/>
                                    <constraint firstItem="Rr4-Yx-SRn" firstAttribute="centerY" secondItem="07C-Jx-O92" secondAttribute="centerY" id="oLM-Sg-xTa"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mYe-Gd-Tgq">
                                <rect key="frame" x="0.0" y="141" width="375" height="91"/>
                                <subviews>
                                    <textField opaque="NO" clipsSubviews="YES" tag="90" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Device Orientation support" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Kdq-Kn-JCR">
                                        <rect key="frame" x="20" y="28.666666666666657" width="335" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.24970456063326163" green="0.47692340353260865" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
                                    </textField>
                                </subviews>
                                <constraints>
                                    <constraint firstItem="Kdq-Kn-JCR" firstAttribute="centerY" secondItem="mYe-Gd-Tgq" secondAttribute="centerY" id="2CN-F1-3El"/>
                                    <constraint firstItem="Kdq-Kn-JCR" firstAttribute="leading" secondItem="mYe-Gd-Tgq" secondAttribute="leading" constant="20" id="7iO-kF-IB8"/>
                                    <constraint firstAttribute="trailing" secondItem="Kdq-Kn-JCR" secondAttribute="trailing" constant="20" id="Vo2-yk-WEW"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gKE-F4-xNG">
                                <rect key="frame" x="0.0" y="232" width="375" height="91"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="This textField observes custom prev/next/done selector" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="s35-Qq-Nsv">
                                        <rect key="frame" x="20" y="16.666666666666657" width="335" height="12"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                        <color key="textColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <textField opaque="NO" clipsSubviews="YES" tag="102" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="UITextField Category for Keyboard" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="f9i-hv-EJj">
                                        <rect key="frame" x="20" y="28.666666666666686" width="335" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.47692340353260865" green="0.42763441709464001" blue="0.014257565567641661" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" keyboardType="numbersAndPunctuation"/>
                                    </textField>
                                </subviews>
                                <constraints>
                                    <constraint firstItem="f9i-hv-EJj" firstAttribute="leading" secondItem="gKE-F4-xNG" secondAttribute="leading" constant="20" id="0oh-fc-6jB"/>
                                    <constraint firstItem="s35-Qq-Nsv" firstAttribute="leading" secondItem="f9i-hv-EJj" secondAttribute="leading" id="2In-2R-Uae"/>
                                    <constraint firstItem="f9i-hv-EJj" firstAttribute="centerY" secondItem="gKE-F4-xNG" secondAttribute="centerY" id="P8Y-MY-e5d"/>
                                    <constraint firstItem="f9i-hv-EJj" firstAttribute="top" secondItem="s35-Qq-Nsv" secondAttribute="bottom" id="VG2-w7-fo3"/>
                                    <constraint firstItem="s35-Qq-Nsv" firstAttribute="trailing" secondItem="f9i-hv-EJj" secondAttribute="trailing" id="cHT-2E-Hld"/>
                                    <constraint firstAttribute="trailing" secondItem="f9i-hv-EJj" secondAttribute="trailing" constant="20" id="v2l-rD-nJs"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0lP-yw-jhD">
                                <rect key="frame" x="0.0" y="323" width="375" height="91"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Customised keyboardDistanceFromTextField = 150" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6fq-Kb-dPm">
                                        <rect key="frame" x="20" y="16.666666666666686" width="335" height="12"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                        <color key="textColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <textField opaque="NO" clipsSubviews="YES" tag="103" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Customize InputView support" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="z7r-JB-8xa" customClass="IQDropDownTextField" customModule="IQDropDownTextFieldSwift">
                                        <rect key="frame" x="20" y="28.666666666666686" width="335" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.47692340353260865" green="0.19614955952842716" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
                                    </textField>
                                </subviews>
                                <constraints>
                                    <constraint firstItem="6fq-Kb-dPm" firstAttribute="leading" secondItem="z7r-JB-8xa" secondAttribute="leading" id="Pgf-3n-VIk"/>
                                    <constraint firstItem="6fq-Kb-dPm" firstAttribute="trailing" secondItem="z7r-JB-8xa" secondAttribute="trailing" id="QfT-5x-y4a"/>
                                    <constraint firstAttribute="trailing" secondItem="z7r-JB-8xa" secondAttribute="trailing" constant="20" id="k61-8p-0mh"/>
                                    <constraint firstItem="z7r-JB-8xa" firstAttribute="leading" secondItem="0lP-yw-jhD" secondAttribute="leading" constant="20" id="oGm-eX-KIF"/>
                                    <constraint firstItem="z7r-JB-8xa" firstAttribute="top" secondItem="6fq-Kb-dPm" secondAttribute="bottom" id="q3r-jM-Bre"/>
                                    <constraint firstItem="z7r-JB-8xa" firstAttribute="centerY" secondItem="0lP-yw-jhD" secondAttribute="centerY" id="t9P-7m-wj3"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IVr-ue-nU2">
                                <rect key="frame" x="0.0" y="414" width="375" height="91"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="This is IQTextView with placeholder support" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eGW-E3-wza">
                                        <rect key="frame" x="20" y="16" width="335" height="12"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                        <color key="textColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" tag="101" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="Nry-4j-VcI" customClass="IQTextView" customModule="IQTextView">
                                        <rect key="frame" x="20" y="28" width="335" height="35"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.47692340353260865" green="0.013985326711680755" blue="0.039278733763664801" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="35" id="rby-6H-tEV"/>
                                        </constraints>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                                        <userDefinedRuntimeAttributes>
                                            <userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="IQTextView for placeholder support"/>
                                        </userDefinedRuntimeAttributes>
                                        <connections>
                                            <outlet property="delegate" destination="csO-qF-Ohn" id="59W-2Q-qQA"/>
                                        </connections>
                                    </textView>
                                </subviews>
                                <constraints>
                                    <constraint firstItem="eGW-E3-wza" firstAttribute="leading" secondItem="Nry-4j-VcI" secondAttribute="leading" id="6wv-uc-6aQ"/>
                                    <constraint firstItem="Nry-4j-VcI" firstAttribute="top" secondItem="eGW-E3-wza" secondAttribute="bottom" id="EIR-De-VfU"/>
                                    <constraint firstItem="Nry-4j-VcI" firstAttribute="leading" secondItem="IVr-ue-nU2" secondAttribute="leading" constant="20" id="HjN-uE-Mdv"/>
                                    <constraint firstItem="Nry-4j-VcI" firstAttribute="centerY" secondItem="IVr-ue-nU2" secondAttribute="centerY" id="XM3-2g-cO8"/>
                                    <constraint firstItem="eGW-E3-wza" firstAttribute="trailing" secondItem="Nry-4j-VcI" secondAttribute="trailing" id="pXr-tY-Uoo"/>
                                    <constraint firstAttribute="trailing" secondItem="Nry-4j-VcI" secondAttribute="trailing" constant="20" id="wu3-r7-nD2"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mBP-UW-teE">
                                <rect key="frame" x="0.0" y="505" width="375" height="91"/>
                                <subviews>
                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" tag="105" contentMode="scaleToFill" text="Can set keyboard and textFiled distance" translatesAutoresizingMaskIntoConstraints="NO" id="0xQ-D1-B5M">
                                        <rect key="frame" x="20" y="28" width="335" height="35"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.47692340353260865" green="3.6346713731378741e-05" blue="0.45383219108448247" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="35" id="dj6-cH-Zri"/>
                                        </constraints>
                                        <color key="textColor" systemColor="labelColor"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                                    </textView>
                                </subviews>
                                <constraints>
                                    <constraint firstAttribute="trailing" secondItem="0xQ-D1-B5M" secondAttribute="trailing" constant="20" id="6wL-Xg-D9P"/>
                                    <constraint firstItem="0xQ-D1-B5M" firstAttribute="leading" secondItem="mBP-UW-teE" secondAttribute="leading" constant="20" id="AvC-kW-sHd"/>
                                    <constraint firstItem="0xQ-D1-B5M" firstAttribute="centerY" secondItem="mBP-UW-teE" secondAttribute="centerY" id="twT-Uj-sP3"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="63Q-wt-23t">
                                <rect key="frame" x="0.0" y="596" width="375" height="91"/>
                                <subviews>
                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" tag="108" contentMode="scaleToFill" text="Can resign on touching outside" translatesAutoresizingMaskIntoConstraints="NO" id="wIC-LZ-asw" customClass="IQTextView" customModule="IQTextView">
                                        <rect key="frame" x="20" y="28" width="335" height="35"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.2440839877768155" green="0.0" blue="0.47692340353260865" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="35" id="gC4-aw-Xji"/>
                                        </constraints>
                                        <color key="textColor" systemColor="labelColor"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                                        <userDefinedRuntimeAttributes>
                                            <userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="enableMode = .disabled"/>
                                        </userDefinedRuntimeAttributes>
                                    </textView>
                                </subviews>
                                <constraints>
                                    <constraint firstItem="wIC-LZ-asw" firstAttribute="centerY" secondItem="63Q-wt-23t" secondAttribute="centerY" id="XAL-DX-Pj3"/>
                                    <constraint firstAttribute="trailing" secondItem="wIC-LZ-asw" secondAttribute="trailing" constant="20" id="Zn4-Uf-ZKq"/>
                                    <constraint firstItem="wIC-LZ-asw" firstAttribute="leading" secondItem="63Q-wt-23t" secondAttribute="leading" constant="20" id="rDb-Nr-G5H"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TZX-d4-nhG">
                                <rect key="frame" x="0.0" y="687" width="375" height="91"/>
                                <subviews>
                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" tag="94" contentMode="scaleToFill" text="can adjust textView's height when it is too big to fit on screen" translatesAutoresizingMaskIntoConstraints="NO" id="Inj-lY-mEU">
                                        <rect key="frame" x="20" y="28" width="335" height="35"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <color key="tintColor" red="0.018422932627533785" green="0.05210980157170237" blue="0.47692340353260865" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="35" id="fqp-Cj-Fie"/>
                                        </constraints>
                                        <color key="textColor" systemColor="labelColor"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                                    </textView>
                                </subviews>
                                <constraints>
                                    <constraint firstItem="Inj-lY-mEU" firstAttribute="centerY" secondItem="TZX-d4-nhG" secondAttribute="centerY" id="N5d-eJ-vYa"/>
                                    <constraint firstAttribute="trailing" secondItem="Inj-lY-mEU" secondAttribute="trailing" constant="20" id="bDY-z9-6Jn"/>
                                    <constraint firstItem="Inj-lY-mEU" firstAttribute="leading" secondItem="TZX-d4-nhG" secondAttribute="leading" constant="20" id="gdX-rf-hFR"/>
                                </constraints>
                            </view>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="gVk-b7-f0c"/>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="TZX-d4-nhG" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="0hd-mo-Nbr"/>
                            <constraint firstItem="mBP-UW-teE" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="1wB-RF-TD2"/>
                            <constraint firstItem="gKE-F4-xNG" firstAttribute="top" secondItem="mYe-Gd-Tgq" secondAttribute="bottom" id="5Mu-tk-54t"/>
                            <constraint firstItem="gKE-F4-xNG" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="5WL-oC-M6f"/>
                            <constraint firstItem="0lP-yw-jhD" firstAttribute="top" secondItem="gKE-F4-xNG" secondAttribute="bottom" id="64J-Fg-DyW"/>
                            <constraint firstItem="IVr-ue-nU2" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="7OP-86-mbQ"/>
                            <constraint firstItem="mBP-UW-teE" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="80g-CY-fpl"/>
                            <constraint firstItem="mBP-UW-teE" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="9wv-3X-JPl"/>
                            <constraint firstItem="mYe-Gd-Tgq" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="A9W-n2-3cc"/>
                            <constraint firstItem="mYe-Gd-Tgq" firstAttribute="top" secondItem="07C-Jx-O92" secondAttribute="bottom" id="B6L-Sg-0ku"/>
                            <constraint firstItem="mYe-Gd-Tgq" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="Ctf-1u-yGa"/>
                            <constraint firstItem="63Q-wt-23t" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="JXg-EF-ytI"/>
                            <constraint firstItem="63Q-wt-23t" firstAttribute="top" secondItem="mBP-UW-teE" secondAttribute="bottom" id="MX4-HF-JHW"/>
                            <constraint firstItem="0lP-yw-jhD" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="MeK-lL-4e8"/>
                            <constraint firstItem="07C-Jx-O92" firstAttribute="top" secondItem="gVk-b7-f0c" secondAttribute="top" id="NAD-o2-nJE"/>
                            <constraint firstItem="IVr-ue-nU2" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="RDf-mv-Y9e"/>
                            <constraint firstItem="mBP-UW-teE" firstAttribute="top" secondItem="IVr-ue-nU2" secondAttribute="bottom" id="TzG-Or-vP3"/>
                            <constraint firstItem="mYe-Gd-Tgq" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="U78-vR-Rha"/>
                            <constraint firstItem="63Q-wt-23t" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="WSG-tC-CoY"/>
                            <constraint firstItem="63Q-wt-23t" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="Z33-KT-FYf"/>
                            <constraint firstItem="gVk-b7-f0c" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="ccN-qD-Mnn"/>
                            <constraint firstItem="gKE-F4-xNG" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="d1Q-fZ-jHN"/>
                            <constraint firstItem="0lP-yw-jhD" firstAttribute="leading" secondItem="07C-Jx-O92" secondAttribute="leading" id="dXf-vS-oZH"/>
                            <constraint firstItem="IVr-ue-nU2" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="iDS-Ml-QGf"/>
                            <constraint firstItem="gKE-F4-xNG" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="mi6-j9-Azn"/>
                            <constraint firstItem="TZX-d4-nhG" firstAttribute="top" secondItem="63Q-wt-23t" secondAttribute="bottom" id="nOd-tP-M9I"/>
                            <constraint firstItem="TZX-d4-nhG" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="qri-tx-hEw"/>
                            <constraint firstItem="IVr-ue-nU2" firstAttribute="top" secondItem="0lP-yw-jhD" secondAttribute="bottom" id="rVE-gO-9xX"/>
                            <constraint firstItem="TZX-d4-nhG" firstAttribute="trailing" secondItem="07C-Jx-O92" secondAttribute="trailing" id="uue-y8-WME"/>
                            <constraint firstItem="0lP-yw-jhD" firstAttribute="height" secondItem="07C-Jx-O92" secondAttribute="height" id="xRS-DP-aWL"/>
                            <constraint firstItem="gVk-b7-f0c" firstAttribute="bottom" secondItem="TZX-d4-nhG" secondAttribute="bottom" id="xgQ-SX-FLa"/>
                            <constraint firstItem="07C-Jx-O92" firstAttribute="leading" secondItem="gVk-b7-f0c" secondAttribute="leading" id="zTi-hu-eO8"/>
                        </constraints>
                    </view>
                    <navigationItem key="navigationItem" title="TextField Demo" id="s8z-5e-RBK">
                        <barButtonItem key="rightBarButtonItem" image="settings" id="qRy-Jd-18s"/>
                    </navigationItem>
                    <connections>
                        <outlet property="dropDownTextField" destination="z7r-JB-8xa" id="lNo-Ce-mO7"/>
                        <outlet property="textField3" destination="f9i-hv-EJj" id="DBN-J6-duh"/>
                        <outlet property="textView1" destination="Nry-4j-VcI" id="TlE-FP-Tnc"/>
                        <outlet property="textView2" destination="wIC-LZ-asw" id="f9v-Pn-QjU"/>
                        <outlet property="textView3" destination="Inj-lY-mEU" id="nnY-RW-NSk"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="XLS-w0-J9V" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="-2410" y="218"/>
        </scene>
        <!--Manual UIToolbar-->
        <scene sceneID="EHW-3w-JeB">
            <objects>
                <viewController storyboardIdentifier="ManualToolbarViewController" id="BmV-Mf-VMv" customClass="ManualToolbarViewController" customModule="DemoSwift" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="HJo-1K-fJY">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="1" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="dET-Cl-VUb">
                                <rect key="frame" x="10" y="75" width="355" height="34"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits"/>
                            </textField>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pgv-Nr-BWR">
                                <rect key="frame" x="10" y="114" width="355" height="44"/>
                                <subviews>
                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="3" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ai2-LR-bIl">
                                        <rect key="frame" x="10" y="5" width="335" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                </subviews>
                                <color key="backgroundColor" name="DEDEDE"/>
                                <constraints>
                                    <constraint firstItem="ai2-LR-bIl" firstAttribute="top" secondItem="Pgv-Nr-BWR" secondAttribute="top" constant="5" id="A3I-cA-GyO"/>
                                    <constraint firstAttribute="trailing" secondItem="ai2-LR-bIl" secondAttribute="trailing" constant="10" id="ZGf-Oh-wdZ"/>
                                    <constraint firstAttribute="bottom" secondItem="ai2-LR-bIl" secondAttribute="bottom" constant="5" id="dPk-S2-Azk"/>
                                    <constraint firstItem="ai2-LR-bIl" firstAttribute="leading" secondItem="Pgv-Nr-BWR" secondAttribute="leading" constant="10" id="jrD-p6-2uZ"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1qv-RL-5nG">
                                <rect key="frame" x="10" y="620" width="355" height="56"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="This textField customise toolbar titile to use as UIButton" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R4y-qs-Tiw">
                                        <rect key="frame" x="10" y="5" width="335" height="12"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                        <color key="textColor" name="535353"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter Username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="dQK-Ms-QYa">
                                        <rect key="frame" x="10" y="17" width="335" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                </subviews>
                                <color key="backgroundColor" name="DEDEDE"/>
                                <constraints>
                                    <constraint firstItem="R4y-qs-Tiw" firstAttribute="leading" secondItem="dQK-Ms-QYa" secondAttribute="leading" id="7ov-eH-Nhx"/>
                                    <constraint firstItem="dQK-Ms-QYa" firstAttribute="top" secondItem="R4y-qs-Tiw" secondAttribute="bottom" id="K3V-NR-RFI"/>
                                    <constraint firstItem="dQK-Ms-QYa" firstAttribute="leading" secondItem="1qv-RL-5nG" secondAttribute="leading" constant="10" id="OBZ-E2-1EM"/>
                                    <constraint firstAttribute="trailing" secondItem="dQK-Ms-QYa" secondAttribute="trailing" constant="10" id="UA8-qq-Ybl"/>
                                    <constraint firstItem="R4y-qs-Tiw" firstAttribute="top" secondItem="1qv-RL-5nG" secondAttribute="top" constant="5" id="efc-JE-Ih3"/>
                                    <constraint firstAttribute="bottom" secondItem="dQK-Ms-QYa" secondAttribute="bottom" constant="5" id="j3g-1c-1ng"/>
                                    <constraint firstItem="R4y-qs-Tiw" firstAttribute="trailing" secondItem="dQK-Ms-QYa" secondAttribute="trailing" id="wei-vJ-WEo"/>
                                </constraints>
                            </view>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zjk-gc-QEr">
                                <rect key="frame" x="10" y="163" width="355" height="452"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <string key="text">2 There are also nice optional features allowing you to customize the distance from the text field, add the next/previous done button as a keyboard UIToolbar, play sounds when the user navigations through the form and more. 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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oB6-a2-0nS">
                                <rect key="frame" x="10" y="686" width="355" height="48"/>
                                <string key="text">If you do not want to add any UIToolbar on a textField, just set ablank UIView as it's inputAccessoryView
                                    
                                    textField.inputAcessoryView = [[UIView alloc] init];</string>
                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                <color key="textColor" systemColor="systemGrayColor"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="9al-mX-KU2">
                                <rect key="frame" x="10" y="739" width="355" height="34"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits"/>
                            </textField>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="Yjf-Wp-up3"/>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="Pgv-Nr-BWR" firstAttribute="leading" secondItem="dET-Cl-VUb" secondAttribute="leading" id="3le-BI-CJa"/>
                            <constraint firstItem="Yjf-Wp-up3" firstAttribute="bottom" secondItem="9al-mX-KU2" secondAttribute="bottom" constant="5" id="4HV-1n-B4X"/>
                            <constraint firstItem="dET-Cl-VUb" firstAttribute="top" secondItem="Yjf-Wp-up3" secondAttribute="top" constant="25" id="6H5-cx-nVG"/>
                            <constraint firstItem="Yjf-Wp-up3" firstAttribute="trailing" secondItem="dET-Cl-VUb" secondAttribute="trailing" constant="10" id="BXC-53-WaL"/>
                            <constraint firstItem="oB6-a2-0nS" firstAttribute="top" secondItem="1qv-RL-5nG" secondAttribute="bottom" constant="10" id="BwN-QK-0hQ"/>
                            <constraint firstItem="Pgv-Nr-BWR" firstAttribute="top" secondItem="dET-Cl-VUb" secondAttribute="bottom" constant="5" id="JMG-i3-v34"/>
                            <constraint firstItem="Zjk-gc-QEr" firstAttribute="leading" secondItem="dET-Cl-VUb" secondAttribute="leading" id="Jgh-Kb-isa"/>
                            <constraint firstItem="1qv-RL-5nG" firstAttribute="trailing" secondItem="dET-Cl-VUb" secondAttribute="trailing" id="Mbb-rm-sRE"/>
                            <constraint firstItem="Pgv-Nr-BWR" firstAttribute="trailing" secondItem="dET-Cl-VUb" secondAttribute="trailing" id="Mk2-JS-Zsp"/>
                            <constraint firstItem="dET-Cl-VUb" firstAttribute="leading" secondItem="Yjf-Wp-up3" secondAttribute="leading" constant="10" id="Nhv-We-MSD"/>
                            <constraint firstItem="oB6-a2-0nS" firstAttribute="trailing" secondItem="dET-Cl-VUb" secondAttribute="trailing" id="etb-1Z-4lg"/>
                            <constraint firstItem="oB6-a2-0nS" firstAttribute="leading" secondItem="dET-Cl-VUb" secondAttribute="leading" id="jc7-ud-YEv"/>
                            <constraint firstItem="9al-mX-KU2" firstAttribute="top" secondItem="oB6-a2-0nS" secondAttribute="bottom" constant="5" id="kVs-y0-B8I"/>
                            <constraint firstItem="9al-mX-KU2" firstAttribute="leading" secondItem="dET-Cl-VUb" secondAttribute="leading" id="oo1-jf-rsZ"/>
                            <constraint firstItem="Zjk-gc-QEr" firstAttribute="top" secondItem="Pgv-Nr-BWR" secondAttribute="bottom" constant="5" id="rUw-Es-cy9"/>
                            <constraint firstItem="1qv-RL-5nG" firstAttribute="top" secondItem="Zjk-gc-QEr" secondAttribute="bottom" constant="5" id="rz6-wV-SSa"/>
                            <constraint firstItem="1qv-RL-5nG" firstAttribute="leading" secondItem="dET-Cl-VUb" secondAttribute="leading" id="vMi-Ct-4eU"/>
                            <constraint firstItem="9al-mX-KU2" firstAttribute="trailing" secondItem="dET-Cl-VUb" secondAttribute="trailing" id="xDs-zv-VIN"/>
                            <constraint firstItem="Zjk-gc-QEr" firstAttribute="trailing" secondItem="dET-Cl-VUb" secondAttribute="trailing" id="zIO-cM-iyj"/>
                        </constraints>
                    </view>
                    <navigationItem key="navigationItem" title="Manual UIToolbar" id="Bsk-WG-eqv">
                        <barButtonItem key="rightBarButtonItem" image="settings" id="EP2-V0-ARn"/>
                    </navigationItem>
                    <connections>
                        <outlet property="textField1" destination="dET-Cl-VUb" id="bJd-Xd-5BS"/>
                        <outlet property="textField2" destination="ai2-LR-bIl" id="Fip-nM-yvi"/>
                        <outlet property="textField4" destination="dQK-Ms-QYa" id="HCJ-fa-BwX"/>
                        <outlet property="textField5" destination="9al-mX-KU2" id="xPc-vR-IFK"/>
                        <outlet property="textView3" destination="Zjk-gc-QEr" id="TE7-Z9-bH1"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="bYo-9Y-oOp" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="-1268" y="217"/>
        </scene>
        <!--UITextView-->
        <scene sceneID="3sv-pN-G2Q">
            <objects>
                <viewController storyboardIdentifier="TextViewSpecialCaseViewController" automaticallyAdjustsScrollViewInsets="NO" id="S5Z-0B-U3b" customClass="TextViewSpecialCaseViewController" customModule="DemoSwift" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="WXo-oP-G5s">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                        <subviews>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L8v-ua-y0A">
                                <rect key="frame" x="4.9999999999999929" y="50" width="118.33333333333331" height="728"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <color key="tintColor" red="0.037223728980000002" green="0.2286975034" blue="0.47692340350000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <string key="text">`IQKeyboardManager` allows you to prevent issues of the keyboard sliding up and covering a text field without needing you to enter any code.
                                    
                                    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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rUI-UY-dtz">
                                <rect key="frame" x="128.33333333333334" y="50" width="118.33333333333334" height="361.66666666666669"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <color key="tintColor" red="0.17938000649999999" green="0.47692340350000001" blue="0.46705995909999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <string key="text">One of the Speciality of this Library is `It Works Automatically`.
                                    
                                    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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2d0-tG-Pzx">
                                <rect key="frame" x="251.66666666666666" y="50" width="118.33333333333334" height="241"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <color key="tintColor" red="0.35979851940000002" green="0.47692340350000001" blue="0.23990625860000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <string key="text">`IQKeyboardManager` works on all orientations, and with the toolbar.
                                    
                                    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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="m72-tJ-oyd">
                                <rect key="frame" x="128.33333333333334" y="416.66666666666674" width="118.33333333333334" height="361.33333333333326"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <color key="tintColor" red="0.1750397256" green="0.47692340350000001" blue="0.27988265709999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <string key="text">`ZERO LINE OF CODE`, `No More imports`, `No More Subclasses`, `No More Manual Work`.
                                    
                                    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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LEb-Ei-7Sx">
                                <rect key="frame" x="251.66666666666666" y="296" width="118.33333333333334" height="482"/>
                                <color key="backgroundColor" name="EBEDF0"/>
                                <color key="tintColor" red="0.47692340350000001" green="0.36313484200000001" blue="0.25518210050000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <string key="text">To use `IQKeyboardManager` you simply need to add the framework to your project or add the source files to your project.
                                    
                                    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. 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. 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>
                                <color key="textColor" systemColor="labelColor"/>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                            </textView>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="4Hs-Z1-5S0"/>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="L8v-ua-y0A" firstAttribute="leading" secondItem="4Hs-Z1-5S0" secondAttribute="leading" constant="5" id="1Z6-kz-nkX"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="bottom" secondItem="L8v-ua-y0A" secondAttribute="bottom" id="7jW-xw-uDa"/>
                            <constraint firstItem="rUI-UY-dtz" firstAttribute="top" secondItem="L8v-ua-y0A" secondAttribute="top" id="9jH-nR-8Ko"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="width" secondItem="L8v-ua-y0A" secondAttribute="width" id="C9t-kP-qh4"/>
                            <constraint firstItem="rUI-UY-dtz" firstAttribute="width" secondItem="L8v-ua-y0A" secondAttribute="width" id="Dto-Rj-fEC"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="leading" secondItem="L8v-ua-y0A" secondAttribute="trailing" constant="5" id="Em0-VM-97A"/>
                            <constraint firstItem="L8v-ua-y0A" firstAttribute="top" secondItem="4Hs-Z1-5S0" secondAttribute="top" id="KWN-6I-voR"/>
                            <constraint firstItem="2d0-tG-Pzx" firstAttribute="top" secondItem="L8v-ua-y0A" secondAttribute="top" id="McL-1G-XOY"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="top" secondItem="2d0-tG-Pzx" secondAttribute="bottom" constant="5" id="NOG-mS-YIV"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="leading" secondItem="rUI-UY-dtz" secondAttribute="leading" id="RW0-VM-sPH"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="top" secondItem="rUI-UY-dtz" secondAttribute="bottom" constant="5" id="Tqi-zV-DFJ"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="leading" secondItem="m72-tJ-oyd" secondAttribute="trailing" constant="5" id="Uul-rf-JOo"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="height" secondItem="2d0-tG-Pzx" secondAttribute="height" multiplier="2:1" id="Y2v-8q-AZo"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="bottom" secondItem="L8v-ua-y0A" secondAttribute="bottom" id="YlB-va-Idl"/>
                            <constraint firstItem="4Hs-Z1-5S0" firstAttribute="bottom" secondItem="L8v-ua-y0A" secondAttribute="bottom" id="dbY-GW-xN8"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="trailing" secondItem="2d0-tG-Pzx" secondAttribute="trailing" id="euN-2B-39x"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="width" secondItem="L8v-ua-y0A" secondAttribute="width" id="fzt-8G-ESW"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="trailing" secondItem="rUI-UY-dtz" secondAttribute="trailing" id="jud-Tn-Z0v"/>
                            <constraint firstItem="4Hs-Z1-5S0" firstAttribute="trailing" secondItem="2d0-tG-Pzx" secondAttribute="trailing" constant="5" id="nCU-Uf-YaN"/>
                            <constraint firstItem="m72-tJ-oyd" firstAttribute="height" secondItem="rUI-UY-dtz" secondAttribute="height" id="oSn-aq-5n8"/>
                            <constraint firstItem="2d0-tG-Pzx" firstAttribute="width" secondItem="L8v-ua-y0A" secondAttribute="width" id="rfn-CF-5FM"/>
                            <constraint firstItem="LEb-Ei-7Sx" firstAttribute="leading" secondItem="2d0-tG-Pzx" secondAttribute="leading" id="yOI-0E-V1k"/>
                        </constraints>
                    </view>
                    <navigationItem key="navigationItem" title="UITextView" id="Qen-Wv-SxX">
                        <barButtonItem key="rightBarButtonItem" image="settings" id="3yn-Xo-guq"/>
                    </navigationItem>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="I5w-ff-duj" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="-310" y="216"/>
        </scene>
        <!--Safe Area-->
        <scene sceneID="9fU-TF-E5D">
            <objects>
                <viewController storyboardIdentifier="SafeAreaViewController" id="ICH-Xc-ydU" userLabel="Safe Area" customClass="SafeAreaViewController" customModule="DemoSwift" customModuleProvider="target" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="hC1-xV-1iw">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                        <subviews>
                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" translatesAutoresizingMaskIntoConstraints="NO" id="XPo-YC-Qv5">
                                <rect key="frame" x="20" y="70" width="157.66666666666666" height="688"/>
                                <subviews>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="5bJ-5h-HEC">
                                        <rect key="frame" x="0.0" y="0.0" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="CRH-AN-Q1M">
                                        <rect key="frame" x="0.0" y="81.666666666666657" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="pFQ-qK-3Sk">
                                        <rect key="frame" x="0.0" y="163.66666666666666" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="4Aa-Xv-H4G">
                                        <rect key="frame" x="0.0" y="245.33333333333331" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="DZ4-MB-gMd">
                                        <rect key="frame" x="0.0" y="327" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="d3c-i6-5rn">
                                        <rect key="frame" x="0.0" y="408.66666666666669" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="tqi-ZZ-bIw">
                                        <rect key="frame" x="0.0" y="490.66666666666663" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="1xZ-Gm-mcg">
                                        <rect key="frame" x="0.0" y="572.33333333333337" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Safe Area" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="fNi-X2-ujc">
                                        <rect key="frame" x="0.0" y="654" width="157.66666666666666" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                </subviews>
                            </stackView>
                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" translatesAutoresizingMaskIntoConstraints="NO" id="nMg-hh-XNK">
                                <rect key="frame" x="197.66666666666663" y="20" width="157.33333333333337" height="772"/>
                                <subviews>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="LRV-UA-aJI">
                                        <rect key="frame" x="0.0" y="0.0" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="4kg-ow-w8s">
                                        <rect key="frame" x="0.0" y="92.333333333333329" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="tZX-Ud-h5e">
                                        <rect key="frame" x="0.0" y="184.66666666666666" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="LYh-cE-9Z2">
                                        <rect key="frame" x="0.0" y="276.66666666666669" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="2o4-KZ-U1b">
                                        <rect key="frame" x="0.0" y="369" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="ljO-yP-wR6">
                                        <rect key="frame" x="0.0" y="461.33333333333331" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="K98-Yn-lms">
                                        <rect key="frame" x="0.0" y="553.66666666666663" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="41Q-ZA-71m">
                                        <rect key="frame" x="0.0" y="645.66666666666663" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                    <textField opaque="NO" clipsSubviews="YES" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Superview" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="CAN-Fy-xiC">
                                        <rect key="frame" x="0.0" y="738" width="157.33333333333334" height="34"/>
                                        <color key="backgroundColor" name="EBEDF0"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                </subviews>
                            </stackView>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="yGM-h5-Ibm"/>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="nMg-hh-XNK" firstAttribute="top" secondItem="hC1-xV-1iw" secondAttribute="top" constant="20" id="4zj-zT-RxS"/>
                            <constraint firstItem="yGM-h5-Ibm" firstAttribute="bottom" secondItem="XPo-YC-Qv5" secondAttribute="bottom" constant="20" id="AgI-E2-hWN"/>
                            <constraint firstItem="nMg-hh-XNK" firstAttribute="leading" secondItem="XPo-YC-Qv5" secondAttribute="trailing" constant="20" id="CEV-mf-rM2"/>
                            <constraint firstAttribute="bottom" secondItem="nMg-hh-XNK" secondAttribute="bottom" constant="20" id="IgY-YY-vfQ"/>
                            <constraint firstItem="XPo-YC-Qv5" firstAttribute="leading" secondItem="yGM-h5-Ibm" secondAttribute="leading" constant="20" id="L4i-4D-1RO"/>
                            <constraint firstAttribute="trailing" secondItem="nMg-hh-XNK" secondAttribute="trailing" constant="20" id="MmU-7Y-tqh"/>
                            <constraint firstItem="XPo-YC-Qv5" firstAttribute="top" secondItem="yGM-h5-Ibm" secondAttribute="top" constant="20" id="sQO-qH-HN3"/>
                            <constraint firstItem="nMg-hh-XNK" firstAttribute="width" secondItem="XPo-YC-Qv5" secondAttribute="width" id="uUO-Ik-5nN"/>
                        </constraints>
                    </view>
                    <navigationItem key="navigationItem" title="Safe Area vs Superview" id="5dW-ym-N3p">
                        <barButtonItem key="rightBarButtonItem" image="settings" id="8zL-ef-0dg"/>
                    </navigationItem>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="XRR-Xd-R6p" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="-3206" y="218"/>
        </scene>
    </scenes>
    <resources>
        <image name="settings" width="25" height="25"/>
        <namedColor name="535353">
            <color red="0.32549019607843138" green="0.32549019607843138" blue="0.32549019607843138" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <namedColor name="DEDEDE">
            <color red="0.87058823529411766" green="0.87058823529411766" blue="0.87058823529411766" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <namedColor name="EBEDF0">
            <color red="0.92156862745098034" green="0.92941176470588238" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="labelColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="systemGrayColor">
            <color red="0.55686274509803924" green="0.55686274509803924" blue="0.57647058823529407" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </systemColor>
    </resources>
</document>


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/Launch.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="SLD-W0-iHs">
    <device id="retina5_9" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment version="5120" identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
        <capability name="Named colors" minToolsVersion="9.0"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="Upz-E2-HnO">
            <objects>
                <viewController id="SLD-W0-iHs" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="gvr-2z-xYP">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="IQKeyboardManager
Swift" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Gp-lr-M5c">
                                <rect key="frame" x="67.333333333333329" y="376" width="240.33333333333337" height="60"/>
                                <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/>
                                <color key="textColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="DYU-Qw-MNf"/>
                        <color key="backgroundColor" name="EBEDF0"/>
                        <constraints>
                            <constraint firstItem="8Gp-lr-M5c" firstAttribute="centerY" secondItem="gvr-2z-xYP" secondAttribute="centerY" id="Niw-IN-QDx"/>
                            <constraint firstItem="8Gp-lr-M5c" firstAttribute="centerX" secondItem="DYU-Qw-MNf" secondAttribute="centerX" id="jBs-oW-3q8"/>
                        </constraints>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="473-od-mMH" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="84" y="160"/>
        </scene>
    </scenes>
    <resources>
        <namedColor name="EBEDF0">
            <color red="0.92156862745098034" green="0.92941176470588238" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
    </resources>
</document>


================================================
FILE: Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="24127" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="iFF-SZ-t3m">
    <device id="retina6_1" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment version="5120" identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24063"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--IQKeyboardManagerSwift-->
        <scene sceneID="q9Q-KK-LGH">
            <objects>
                <tableViewController storyboardIdentifier="ViewController" id="hc7-47-3EI" customClass="ViewController" customModule="IQKeyboardManagerSwiftExampleSwift" customModuleProvider="target" sceneMemberID="viewController">
                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="hWg-0w-ugq">
                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/>
                        <sections>
                            <tableViewSection headerTitle="Library Properties" id="fYv-iE-p8L">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="itr-sp-j54" detailTextLabel="ko2-SX-mJs" rowHeight="180" style="IBUITableViewCellStyleSubtitle" id="rV8-ZH-g8s">
                                        <rect key="frame" x="0.0" y="38" width="414" height="180"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="rV8-ZH-g8s" id="uzP-S2-ijJ">
                                            <rect key="frame" x="0.0" y="0.0" width="383.5" height="180"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="UITextField/UITextView example" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="itr-sp-j54">
                                                    <rect key="frame" x="20" y="6" width="237.5" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ko2-SX-mJs">
                                                    <rect key="frame" x="20" y="28.5" width="264" height="143.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <string key="text">- enable
- shouldToolbarUsesTextFieldTintColor
- keyboardDistanceFromTextField
- shouldShowToolbarPlaceholder
- placeholderFont
- keyboardDistanceFromTextField (Category)
- IQTextView (Class)
- setCustomPreviousTarget: action: (Category)
- setCustomNextTarget: action: (Category)
- setCustomDoneTarget: action: (Category)</string>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="KZJ-ih-4D1" kind="show" id="W2Y-70-Q2B"/>
                                        </connections>
                                    </tableViewCell>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="F3P-4I-j2h" detailTextLabel="KuD-1z-36f" rowHeight="200" style="IBUITableViewCellStyleSubtitle" id="Bu6-lO-Ym3">
                                        <rect key="frame" x="0.0" y="218" width="414" height="200"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Bu6-lO-Ym3" id="KwX-VJ-NI2">
                                            <rect key="frame" x="0.0" y="0.0" width="383.5" height="200"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="NavigationBar &amp; Toolbar" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="F3P-4I-j2h">
                                                    <rect key="frame" x="20" y="9" width="180" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KuD-1z-36f">
                                                    <rect key="frame" x="20" y="31.5" width="245.5" height="158"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <string key="text">- enableAutoToolbar
- toolbarManageBehaviour
- overrideKeyboardAppearance
- keyboardAppearance
- shouldResignOnTouchOutside
- IQKeyboardReturnKeyHandler (Class)
- shouldHideToolbarPlaceholder (Category)
- toolbarPlaceholder (Category)
- toolbarTintColor
- toolbarDoneBarButtonItemImage
- toolbarDoneBarButtonItemText</string>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="Ms3-hB-G13" kind="show" id="yE3-3X-hi4"/>
                                        </connections>
                                    </tableViewCell>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="xCu-GT-OP1" detailTextLabel="wqF-JW-cmz" rowHeight="120" style="IBUITableViewCellStyleSubtitle" id="gaM-pl-FBU">
                                        <rect key="frame" x="0.0" y="418" width="414" height="120"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="gaM-pl-FBU" id="cHL-Ey-3Jx">
                                            <rect key="frame" x="0.0" y="0.0" width="383.5" height="120"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Manual UIToolbar + No UIToolbar" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xCu-GT-OP1">
                                                    <rect key="frame" x="20" y="19" width="244.5" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wqF-JW-cmz">
                                                    <rect key="frame" x="20" y="41.5" width="297" height="57.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <string key="text">- addPreviousNextDoneOnKeyboardWithTarget: previousAction: nextAction: doneAction:
- addDoneOnKeyboardWithTarget: action:
- Use Toolbar title as button to do something special</string>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="WgA-YP-cxW" kind="show" id="tP0-zH-Mg3"/>
                                        </connections>
                                    </tableViewCell>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="ask-lD-56a" detailTextLabel="YB6-DC-bfI" rowHeight="140" style="IBUITableViewCellStyleSubtitle" id="r6j-Mg-HQ1">
                                        <rect key="frame" x="0.0" y="538" width="414" height="140"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="r6j-Mg-HQ1" id="QPI-y0-8Cp">
                                            <rect key="frame" x="0.0" y="0.0" width="383.5" height="140"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="CustomView example" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ask-lD-56a">
                                                    <rect key="frame" x="20" y="7" width="159.5" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YB6-DC-bfI">
                                                    <rect key="frame" x="20" y="29.5" width="212" height="100.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <string key="text">- disabledDistanceHandlingClasses
- enabledDistanceHandlingClasses
- disabledToolbarClasses
- enabledToolbarClasses
- toolbarPreviousNextAllowedClasses
- disabledTouchResignedClasses
- enabledTouchResignedClasses</string>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="nmC-1p-Jwt" kind="show" id="oNo-g4-5Ja"/>
                                        </connections>
                                    </tableViewCell>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="C0s-kb-Bl8" detailTextLabel="Dzz-bo-Ft8" rowHeight="50" style="IBUITableViewCellStyleSubtitle" id="FRT-I5-NmU">
                                        <rect key="frame" x="0.0" y="678" width="414" height="50"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="FRT-I5-NmU" id="vYL-GT-yKg">
                                            <rect key="frame" x="0.0" y="0.0" width="383.5" height="50"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Refreshing Layout on the fly" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="C0s-kb-Bl8">
                                                    <rect key="frame" x="20" y="8" width="208" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="- (void)reloadLayoutIfNeeded" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Dzz-bo-Ft8">
                                                    <rect key="frame" x="20" y="27.5" width="167" height="14.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="5CX-b7-6hI" kind="show" id="aOV-sa-4P6"/>
                                        </connections>
                                    </tableViewCell>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="mbB-Qz-Hhy" detailTextLabel="UVI-e1-Sde" rowHeight="50" style="IBUITableViewCellStyleSubtitle" id="YIN-Gz-qfd">
                                        <rect key="frame" x="0.0" y="728" width="414" height="50"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="YIN-Gz-qfd" id="QeO-AZ-sgs">
                                            <rect key="frame" x="0.0" y="0.0" width="383.5" height="50"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Safe Area" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="mbB-Qz-Hhy">
                                                    <rect key="frame" x="20" y="8" width="72" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Safe Area vs Superview" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="UVI-e1-Sde">
                                                    <rect key="frame" x="20" y="27.5" width="133" height="14.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="calibratedWhite"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="ndP-wQ-Hwk" kind="show" id="uMd-Sm-cFX"/>
                                        </connections>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                            <tableViewSection headerTitle="UIScrollView &amp; it's subclasses example" id="6Y6-J2-kBv">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="fsu-LW-S6P" rowHeight="50" style="IBUITableViewCellStyleDefault" id="Qfe-BD-23A">
                                        <rect key="frame" x="0.0" y="834" width="414" height="50"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Qfe-BD-23A" id="DQj-0u-qKi">
                                            <rect key="frame" x="0.0" y="0.0" width="395.5" height="50"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" ambiguous="YES" text="UITextView ContentInset adjustment" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="fsu-LW-S6P">
                                                    <rect key="frame" x="8" y="0.0" width="379.5" height="50"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                        <connections>
                                            <segue destination="Jvz-H7-DbK" kind="show" id="sR5-0y-Wzc"/>
                                        </connections>
                                    </tableViewCell>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="xTK-Wa-4qX" detailTextLabel="JUG-pm-L0a" rowHeight="50" style="IBUITableViewCellStyleSubtitle" id="qPe-ob-ZTP">
                                        <rect key="frame" x="0.0" y="884" width="414" height="50"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="qPe-ob-ZTP" id="6nU-q7-oiF">
                                            <rect key="frame" x="0.0" y="0.0" width="395.5" height="50"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" ambiguous="YES" text="UIScrollView+UITableView example" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xTK-Wa-4qX">
                                                    <rect key="frame" x="8" y="8" width="261.5" height="19.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" ambiguous="YES" text="UITableView inside UIScrollView" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="JUG-pm-L0a">
                                                    <rect key="frame" x="8" y="27.5" width="180.5" height="14.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
          
Download .txt
gitextract_498hdp8z/

├── .codeclimate.yml
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── copilot-instructions.md
│   └── pull_request_template.md
├── .gitignore
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cartfile
├── Cartfile.resolved
├── Documentation/
│   ├── MIGRATION GUIDE 1.0 TO 2.0.md
│   ├── MIGRATION GUIDE 2.0 TO 3.0.md
│   ├── MIGRATION GUIDE 3.0 TO 4.0.md
│   ├── MIGRATION GUIDE 4.0 TO 5.0.md
│   ├── MIGRATION GUIDE 5.0 TO 6.0.md
│   ├── MIGRATION GUIDE 6.0 TO 7.0.md
│   └── MIGRATION GUIDE 7.0 TO 8.0.md
├── Example/
│   ├── .swiftlint.yml
│   ├── IQKeyboardManagerSwiftExample/
│   │   ├── AppDelegate.swift
│   │   ├── Cell/
│   │   │   ├── ColorTableViewCell.swift
│   │   │   ├── ImageSwitchTableViewCell.swift
│   │   │   ├── NavigationTableViewCell.swift
│   │   │   ├── OptionTableViewCell.swift
│   │   │   ├── StepperTableViewCell.swift
│   │   │   ├── SwitchTableViewCell.swift
│   │   │   └── TextFieldTableViewCell.swift
│   │   ├── Extension/
│   │   │   └── UITableView+Extension.swift
│   │   ├── Resources/
│   │   │   ├── Base.lproj/
│   │   │   │   └── InfoPlist.strings
│   │   │   ├── IQKeyboardManagerSwiftExample.entitlements
│   │   │   ├── IQKeyboardManger-Swift-Bridging-Header.h
│   │   │   ├── Images.xcassets/
│   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Color/
│   │   │   │   │   ├── 171717.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 3C3C43.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 404040.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 535353.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── 757677.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── A1A1A1.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── ABB0BA.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── D1D2D9.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── DEDEDE.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── EBEDF0.colorset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── EBF0F7.colorset/
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── IQButtonBarArrowDown.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── logo_blue.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── logo_brown.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── logo_gray.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── original1.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   └── settings.imageset/
│   │   │   │       └── Contents.json
│   │   │   ├── Info.plist
│   │   │   └── ar.lproj/
│   │   │       └── InfoPlist.strings
│   │   ├── Storyboard/
│   │   │   ├── Base.lproj/
│   │   │   │   ├── FullScreenControllers.storyboard
│   │   │   │   ├── General.storyboard
│   │   │   │   ├── Launch.storyboard
│   │   │   │   ├── Main.storyboard
│   │   │   │   ├── ScrollView.storyboard
│   │   │   │   ├── Settings.storyboard
│   │   │   │   ├── SpecialCase.storyboard
│   │   │   │   └── TestCases.storyboard
│   │   │   └── ar.lproj/
│   │   │       ├── FullScreenControllers.strings
│   │   │       ├── General.strings
│   │   │       ├── Launch.strings
│   │   │       ├── Main.strings
│   │   │       ├── ScrollView.strings
│   │   │       ├── Settings.strings
│   │   │       └── SpecialCase.strings
│   │   └── ViewController/
│   │       ├── AutofillPasswordViewController.swift
│   │       ├── BaseTableViewController.swift
│   │       ├── BaseViewController.swift
│   │       ├── CollectionViewDemoController.swift
│   │       ├── CustomViewController.swift
│   │       ├── EdgesForExtendedLayoutViewController.swift
│   │       ├── EnableMode2000ViewController.swift
│   │       ├── ExampleTableViewController.swift
│   │       ├── ManualToolbarViewController.swift
│   │       ├── NavigationBarViewController.swift
│   │       ├── NavigationController.swift
│   │       ├── NonScrollTextView1979ViewController.swift
│   │       ├── OptionsViewController.swift
│   │       ├── PageViewController.swift
│   │       ├── PopoverViewController.swift
│   │       ├── RefreshLayoutViewController.swift
│   │       ├── ReloadLayout1892ViewController.swift
│   │       ├── SafeAreaViewController.swift
│   │       ├── ScrollViewController.swift
│   │       ├── SearchViewController.swift
│   │       ├── SettingsViewController+TableView.swift
│   │       ├── SettingsViewController.swift
│   │       ├── SpecialCaseViewController.swift
│   │       ├── StackViewController.swift
│   │       ├── TableViewContainerViewController.swift
│   │       ├── TableViewController.swift
│   │       ├── TableViewInContainerViewController.swift
│   │       ├── TestViewController.swift
│   │       ├── TextFieldHostingViewController.swift
│   │       ├── TextFieldView.swift
│   │       ├── TextFieldViewController.swift
│   │       ├── TextSelectionViewController.swift
│   │       ├── TextViewController.swift
│   │       ├── TextViewSpecialCaseViewController.swift
│   │       ├── ViewController.swift
│   │       └── WebViewController.swift
│   ├── IQKeyboardManagerSwiftExample.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── IQKeyboardManagerSwift.xcscheme
│   │           ├── IQKeyboardManagerSwiftExample.xcscheme
│   │           └── IQKeyboardManagerSwiftExampleExtension.xcscheme
│   ├── IQKeyboardManagerSwiftExample.xcworkspace/
│   │   └── contents.xcworkspacedata
│   ├── IQKeyboardManagerSwiftExampleExtension/
│   │   ├── ActionViewController.swift
│   │   ├── Base.lproj/
│   │   │   └── MainInterface.storyboard
│   │   ├── IQKeyboardManagerSwiftExampleExtension.entitlements
│   │   ├── Info.plist
│   │   └── Media.xcassets/
│   │       ├── Contents.json
│   │       └── TouchBarBezel.colorset/
│   │           └── Contents.json
│   └── Podfile
├── IQKeyboardManagerSwift/
│   ├── Appearance/
│   │   ├── IQKeyboardAppearanceConfiguration.swift
│   │   ├── IQKeyboardAppearanceManager+Internal.swift
│   │   ├── IQKeyboardAppearanceManager.swift
│   │   ├── IQKeyboardManager+Appearance.swift
│   │   └── IQKeyboardManager+Appearance_Deprecated.swift
│   ├── IQKeyboardManager/
│   │   ├── Configuration/
│   │   │   ├── IQActiveConfiguration.swift
│   │   │   ├── IQRootControllerConfiguration.swift
│   │   │   └── IQScrollViewConfiguration.swift
│   │   ├── Debug/
│   │   │   └── IQKeyboardManager+Debug.swift
│   │   ├── Deprecated/
│   │   │   └── IQKeyboardManager+Deprecated.swift
│   │   ├── IQKeyboardManager+ActiveConfiguration.swift
│   │   ├── IQKeyboardManager+Internal.swift
│   │   ├── IQKeyboardManager+Position.swift
│   │   ├── IQKeyboardManager.swift
│   │   ├── IQKeyboardManagerExtension/
│   │   │   ├── UIScrollView+IQKeyboardManagerExtension.swift
│   │   │   ├── UIScrollView+IQKeyboardManagerExtensionObjc.swift
│   │   │   ├── UIView+IQKeyboardManagerExtension.swift
│   │   │   └── UIView+IQKeyboardManagerExtensionObjc.swift
│   │   └── UIKitExtensions/
│   │       ├── UICollectionView+IndexPaths.swift
│   │       ├── UITableView+IndexPaths.swift
│   │       ├── UIView+Parent.swift
│   │       ├── UIView+ParentObjc.swift
│   │       └── UIViewController+ParentContainer.swift
│   ├── IQKeyboardManagerSwift.h
│   ├── IQKeyboardToolbarManager/
│   │   ├── IQKeyboardManager+ToolbarManager.swift
│   │   └── IQKeyboardManager+ToolbarManagerDeprecated.swift
│   ├── PrivacyInfo.xcprivacy
│   └── Resign/
│       ├── IQKeyboardManager+Resign.swift
│       ├── IQKeyboardManager+Resign_Deprecated.swift
│       ├── IQKeyboardResignHandler+Internal.swift
│       ├── IQKeyboardResignHandler.swift
│       └── UIKItExtensions/
│           ├── UIView+Resign.swift
│           └── UIView+ResignObjc.swift
├── IQKeyboardManagerSwift.podspec.json
├── LICENSE.md
├── Package.swift
├── README.md
└── SECURITY.md
Condensed preview — 158 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,201K chars).
[
  {
    "path": ".codeclimate.yml",
    "chars": 79,
    "preview": "languages:\n   Objective C: true\n   Swift: true\nexclude_paths:\n- \"Screenshot/*\"\n"
  },
  {
    "path": ".gitattributes",
    "chars": 30,
    "preview": "*.m linguist-detectable=false\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 98,
    "preview": "github: hackiftekhar\nbuy_me_a_coffee: hackiftekhar\ncustom: [\"https://www.paypal.me/hackiftekhar\"]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 726,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 12030,
    "preview": "# IQKeyboardManager\n\nIQKeyboardManager is an iOS library available in both Objective-C and Swift versions that provides "
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 548,
    "preview": "# Description\n\nPlease include a summary of the change and which issue is fixed. Please also include relevant motivation "
  },
  {
    "path": ".gitignore",
    "chars": 491,
    "preview": "# Xcode\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default"
  },
  {
    "path": ".travis.yml",
    "chars": 1010,
    "preview": "matrix:\n  include:\n    - language: objective-c\n      branches:\n          only:\n              - master\n      os: osx\n    "
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5490,
    "preview": "# Code of Conduct\n\n## 1. Purpose\n\nA primary goal of IQKeyboardManager is to be inclusive to the largest number of contri"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2782,
    "preview": "# Contributing to IQKeyboardManager\nWe love your input! We want to make contributing to this project as easy and transpa"
  },
  {
    "path": "Cartfile",
    "chars": 220,
    "preview": "github \"hackiftekhar/IQKeyboardNotification\"\ngithub \"hackiftekhar/IQTextInputViewNotification\"\ngithub \"hackiftekhar/IQKe"
  },
  {
    "path": "Cartfile.resolved",
    "chars": 354,
    "preview": "github \"hackiftekhar/IQKeyboardCore\" \"1.0.7\"\ngithub \"hackiftekhar/IQKeyboardNotification\" \"1.0.5\"\ngithub \"hackiftekhar/I"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 1.0 TO 2.0.md",
    "chars": 1125,
    "preview": "IQKeyboardManager MIGRATION GUIDE 1.0 TO 2.0\n==========================\n\n### 1. Class Name changed\n\nOld class name\n```ob"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 2.0 TO 3.0.md",
    "chars": 833,
    "preview": "IQKeyboardManager MIGRATION GUIDE 2.0 TO 3.0\n==========================\n\n### 1. New features\n\n#### IQKeyboardManager\n```"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 3.0 TO 4.0.md",
    "chars": 5003,
    "preview": "IQKeyboardManager MIGRATION GUIDE 3.0 TO 4.0\n==========================\n\n### 1. New features\n\nNew Class\n```objc\n@interfa"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 4.0 TO 5.0.md",
    "chars": 3336,
    "preview": "IQKeyboardManager MIGRATION GUIDE 4.0 TO 5.0\n==========================\n\n### 1. Removed UIView Category features\n```swif"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 5.0 TO 6.0.md",
    "chars": 995,
    "preview": "IQKeyboardManager MIGRATION GUIDE 5.0 TO 6.0\n==========================\n\n### 1. IQKeyboardManager functions\n\n#### Old IQ"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 6.0 TO 7.0.md",
    "chars": 7326,
    "preview": "IQKeyboardManager MIGRATION GUIDE 6.0 TO 7.0\n==========================\n\n### 1. Removed IQKeyboardManager functions\n```s"
  },
  {
    "path": "Documentation/MIGRATION GUIDE 7.0 TO 8.0.md",
    "chars": 4973,
    "preview": "IQKeyboardManager MIGRATION GUIDE 7.0 TO 8.0\n==========================\n\n### Keyboard Toolbar\n`IQKeyboardManager.shared."
  },
  {
    "path": "Example/.swiftlint.yml",
    "chars": 20,
    "preview": "\nexcluded:\n  - Pods\n"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/AppDelegate.swift",
    "chars": 2292,
    "preview": "//\n//  AppDelegate.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar Qurash"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/ColorTableViewCell.swift",
    "chars": 1393,
    "preview": "//\n//  ColorTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/ImageSwitchTableViewCell.swift",
    "chars": 1330,
    "preview": "//\n//  ImageSwitchTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 If"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/NavigationTableViewCell.swift",
    "chars": 1358,
    "preview": "//\n//  NavigationTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ift"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/OptionTableViewCell.swift",
    "chars": 1309,
    "preview": "//\n//  OptionTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekha"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/StepperTableViewCell.swift",
    "chars": 1436,
    "preview": "//\n//  StepperTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekh"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/SwitchTableViewCell.swift",
    "chars": 1392,
    "preview": "//\n//  SwitchTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekha"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Cell/TextFieldTableViewCell.swift",
    "chars": 1398,
    "preview": "//\n//  TextFieldTableViewCell.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ifte"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Extension/UITableView+Extension.swift",
    "chars": 1924,
    "preview": "//\n//  UITableView+Extension.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftek"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Base.lproj/InfoPlist.strings",
    "chars": 45,
    "preview": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/IQKeyboardManagerSwiftExample.entitlements",
    "chars": 295,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/IQKeyboardManger-Swift-Bridging-Header.h",
    "chars": 1368,
    "preview": "//\n//  IQKeyboardManger-Swift-Bridging-Header.h\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 214,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"logo_blue.jpeg\",\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n     "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/171717.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/3C3C43.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/404040.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/535353.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/757677.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/A1A1A1.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/ABB0BA.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/D1D2D9.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/DEDEDE.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/EBEDF0.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Color/EBF0F7.colorset/Contents.json",
    "chars": 326,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/IQButtonBarArrowDown.imageset/Contents.json",
    "chars": 370,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/logo_blue.imageset/Contents.json",
    "chars": 160,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"logo_blue.jpeg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"aut"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/logo_brown.imageset/Contents.json",
    "chars": 161,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"logo_brown.jpeg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"au"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/logo_gray.imageset/Contents.json",
    "chars": 159,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"logo_gray.png\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"auth"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/original1.imageset/Contents.json",
    "chars": 307,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"original1.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Images.xcassets/settings.imageset/Contents.json",
    "chars": 308,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/Info.plist",
    "chars": 1485,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Resources/ar.lproj/InfoPlist.strings",
    "chars": 45,
    "preview": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/FullScreenControllers.storyboard",
    "chars": 7395,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/General.storyboard",
    "chars": 82060,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/Launch.storyboard",
    "chars": 3334,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/Main.storyboard",
    "chars": 102471,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/ScrollView.storyboard",
    "chars": 141000,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/Settings.storyboard",
    "chars": 55604,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/SpecialCase.storyboard",
    "chars": 129192,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/Base.lproj/TestCases.storyboard",
    "chars": 36965,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/FullScreenControllers.strings",
    "chars": 3535,
    "preview": "\n/* Class = \"UINavigationItem\"; title = \"UISearchController\"; ObjectID = \"4DZ-MZ-qyC\"; */\n\"4DZ-MZ-qyC.title\" = \"UISearch"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/General.strings",
    "chars": 25370,
    "preview": "\n/* Class = \"UITextView\"; text = \"Can set keyboard and textFiled distance\"; ObjectID = \"0xQ-D1-B5M\"; */\n\"0xQ-D1-B5M.text"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/Launch.strings",
    "chars": 132,
    "preview": "\n/* Class = \"UILabel\"; text = \"IQKeyboardManager
Swift\"; ObjectID = \"8Gp-lr-M5c\"; */\n\"8Gp-lr-M5c.text\" = \"IQKeyboardMana"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/Main.strings",
    "chars": 8285,
    "preview": "\n/* Class = \"UILabel\"; text = \"Full Screen TextViewController\"; ObjectID = \"29q-7C-AJL\"; */\n\"29q-7C-AJL.text\" = \"Full Sc"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/ScrollView.strings",
    "chars": 29198,
    "preview": "\n/* Class = \"UINavigationItem\"; title = \"UIScrollView Example\"; ObjectID = \"1XW-VW-7XA\"; */\n\"1XW-VW-7XA.title\" = \"UIScro"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/Settings.strings",
    "chars": 2230,
    "preview": "\n/* Class = \"UILabel\"; text = \"Set customised text for displaying instead of done button\"; ObjectID = \"6c1-Bw-1aW\"; */\n\""
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/Storyboard/ar.lproj/SpecialCase.strings",
    "chars": 5371,
    "preview": "\n/* Class = \"UITextField\"; placeholder = \"Custom Work\"; ObjectID = \"2mf-mU-ovU\"; */\n\"2mf-mU-ovU.placeholder\" = \"Custom W"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/AutofillPasswordViewController.swift",
    "chars": 1685,
    "preview": "//\n//  AutofillPasswordViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/BaseTableViewController.swift",
    "chars": 7084,
    "preview": "//\n//  BaseTableViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ift"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/BaseViewController.swift",
    "chars": 7054,
    "preview": "//\n//  BaseViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/CollectionViewDemoController.swift",
    "chars": 3171,
    "preview": "//\n//  CollectionViewDemoController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-2"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/CustomViewController.swift",
    "chars": 9006,
    "preview": "//\n//  CustomViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekh"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/EdgesForExtendedLayoutViewController.swift",
    "chars": 1417,
    "preview": "//\n//  EdgesForExtendedLayoutViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/EnableMode2000ViewController.swift",
    "chars": 1715,
    "preview": "//\n//  TextSelectionViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/ExampleTableViewController.swift",
    "chars": 3110,
    "preview": "//\n//  ExampleTableViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/ManualToolbarViewController.swift",
    "chars": 5023,
    "preview": "//\n//  ManualToolbarViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/NavigationBarViewController.swift",
    "chars": 2385,
    "preview": "//\n//  NavigationBarViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/NavigationController.swift",
    "chars": 2628,
    "preview": "//\n//  NavigationController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekh"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/NonScrollTextView1979ViewController.swift",
    "chars": 5270,
    "preview": "//\n//  NonScrollTextView1979ViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c)"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/OptionsViewController.swift",
    "chars": 2643,
    "preview": "//\n//  OptionsViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftek"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/PageViewController.swift",
    "chars": 1269,
    "preview": "//\n//  PageViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/PopoverViewController.swift",
    "chars": 1275,
    "preview": "//\n//  PopoverViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftek"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/RefreshLayoutViewController.swift",
    "chars": 2003,
    "preview": "//\n//  RefreshLayoutViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/ReloadLayout1892ViewController.swift",
    "chars": 1533,
    "preview": "//\n//  ReloadLayout1892ViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/SafeAreaViewController.swift",
    "chars": 1277,
    "preview": "//\n//  SafeAreaViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ifte"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/ScrollViewController.swift",
    "chars": 3093,
    "preview": "//\n//  ScrollViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekh"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/SearchViewController.swift",
    "chars": 5574,
    "preview": "//\n//  SearchViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekh"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/SettingsViewController+TableView.swift",
    "chars": 18191,
    "preview": "//\n//  SettingsViewController+TableView.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 20"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/SettingsViewController.swift",
    "chars": 12160,
    "preview": "//\n//  SettingsViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ifte"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/SpecialCaseViewController.swift",
    "chars": 6186,
    "preview": "//\n//  SpecialCaseViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 I"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/StackViewController.swift",
    "chars": 1271,
    "preview": "//\n//  StackViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekha"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TableViewContainerViewController.swift",
    "chars": 1297,
    "preview": "//\n//  TableViewContainerViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 20"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TableViewController.swift",
    "chars": 1276,
    "preview": "//\n//  TableViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekha"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TableViewInContainerViewController.swift",
    "chars": 3940,
    "preview": "//\n//  TableViewInContainerViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TestViewController.swift",
    "chars": 1269,
    "preview": "//\n//  TestViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TextFieldHostingViewController.swift",
    "chars": 1454,
    "preview": "//\n//  TextFieldHostingViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TextFieldView.swift",
    "chars": 2260,
    "preview": "//\n//  TextFieldView.swift\n//  DemoSwift\n//\n//  Created by Iftekhar on 11/6/23.\n//  Copyright © 2023 Iftekhar. All right"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TextFieldViewController.swift",
    "chars": 4931,
    "preview": "//\n//  TextFieldViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ift"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TextSelectionViewController.swift",
    "chars": 2909,
    "preview": "//\n//  TextSelectionViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TextViewController.swift",
    "chars": 1270,
    "preview": "//\n//  TextViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/TextViewSpecialCaseViewController.swift",
    "chars": 1545,
    "preview": "//\n//  TextViewSpecialCaseViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/ViewController.swift",
    "chars": 3267,
    "preview": "//\n//  ViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar Qur"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample/ViewController/WebViewController.swift",
    "chars": 2854,
    "preview": "//\n//  WebViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcodeproj/project.pbxproj",
    "chars": 100659,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcodeproj/xcshareddata/xcschemes/IQKeyboardManagerSwift.xcscheme",
    "chars": 2542,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   version = \"1.7\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcodeproj/xcshareddata/xcschemes/IQKeyboardManagerSwiftExample.xcscheme",
    "chars": 3094,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   version = \"1.7\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcodeproj/xcshareddata/xcschemes/IQKeyboardManagerSwiftExampleExtension.xcscheme",
    "chars": 3866,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   wasCreatedForAppExtension = \"YES\"\n   ve"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExample.xcworkspace/contents.xcworkspacedata",
    "chars": 247,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:IQKeyboardMana"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExampleExtension/ActionViewController.swift",
    "chars": 3247,
    "preview": "//\n//  ActionViewController.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekh"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExampleExtension/Base.lproj/MainInterface.storyboard",
    "chars": 4391,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExampleExtension/IQKeyboardManagerSwiftExampleExtension.entitlements",
    "chars": 295,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExampleExtension/Info.plist",
    "chars": 1800,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExampleExtension/Media.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Example/IQKeyboardManagerSwiftExampleExtension/Media.xcassets/TouchBarBezel.colorset/Contents.json",
    "chars": 185,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  },\n  \"colors\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"color\" "
  },
  {
    "path": "Example/Podfile",
    "chars": 424,
    "preview": "project \"IQKeyboardManagerSwiftExample.xcodeproj\"\n\ntarget \"IQKeyboardManagerSwiftExample\" do\n  use_frameworks!\n  platfor"
  },
  {
    "path": "IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceConfiguration.swift",
    "chars": 1873,
    "preview": "//\n//  IQKeyboardAppearanceConfiguration.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2"
  },
  {
    "path": "IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceManager+Internal.swift",
    "chars": 2224,
    "preview": "//\n//  IQKeyboardAppearanceManager+Internal.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c"
  },
  {
    "path": "IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceManager.swift",
    "chars": 1755,
    "preview": "//\n//  IQKeyboardAppearanceManager.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "IQKeyboardManagerSwift/Appearance/IQKeyboardManager+Appearance.swift",
    "chars": 2195,
    "preview": "//\n//  IQKeyboardManager+Appearance.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-2"
  },
  {
    "path": "IQKeyboardManagerSwift/Appearance/IQKeyboardManager+Appearance_Deprecated.swift",
    "chars": 1789,
    "preview": "//\n//  IQKeyboardManager+Appearance_Deprecated.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQActiveConfiguration.swift",
    "chars": 10391,
    "preview": "//\n//  IQActiveConfiguration.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftek"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQRootControllerConfiguration.swift",
    "chars": 3703,
    "preview": "//\n//  IQRootControllerConfiguration.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQScrollViewConfiguration.swift",
    "chars": 3874,
    "preview": "//\n//  IQScrollViewConfiguration.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 I"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/Debug/IQKeyboardManager+Debug.swift",
    "chars": 2753,
    "preview": "//\n//  IQKeyboardManager+Debug.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ift"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/Deprecated/IQKeyboardManager+Deprecated.swift",
    "chars": 7813,
    "preview": "//\n//  IQKeyboardManager+Deprecated.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-2"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ActiveConfiguration.swift",
    "chars": 4114,
    "preview": "//\n//  IQKeyboardManager+ActiveConfiguration.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright ("
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift",
    "chars": 3733,
    "preview": "//\n//  IQKeyboardManager+Internal.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 "
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift",
    "chars": 39900,
    "preview": "//\n//  IQKeyboardManager+Position.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 "
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift",
    "chars": 8284,
    "preview": "//\n//  IQKeyboardManager.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar "
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIScrollView+IQKeyboardManagerExtension.swift",
    "chars": 4268,
    "preview": "//\n//  UIScrollView+IQKeyboardManagerExtension.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIScrollView+IQKeyboardManagerExtensionObjc.swift",
    "chars": 1865,
    "preview": "//\n//  UIScrollView+IQKeyboardManagerExtensionObjc.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyr"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIView+IQKeyboardManagerExtension.swift",
    "chars": 5426,
    "preview": "//\n//  UIView+IQKeyboardManagerExtension.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIView+IQKeyboardManagerExtensionObjc.swift",
    "chars": 1980,
    "preview": "//\n//  UIView+IQKeyboardManagerExtensionObjc.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright ("
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UICollectionView+IndexPaths.swift",
    "chars": 1899,
    "preview": "//\n//  UICollectionView+IndexPaths.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UITableView+IndexPaths.swift",
    "chars": 1947,
    "preview": "//\n//  UITableView+IndexPaths.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ifte"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIView+Parent.swift",
    "chars": 4101,
    "preview": "//\n//  UIView+Parent.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar Qura"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIView+ParentObjc.swift",
    "chars": 1385,
    "preview": "//\n//  UIView+ParentObjc.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar "
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIViewController+ParentContainer.swift",
    "chars": 2103,
    "preview": "//\n//  UIViewController+ParentContainer.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 20"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardManagerSwift.h",
    "chars": 1630,
    "preview": "//\n//  IQKeyboardManagerSwift.h\n// https://github.com/hackiftekhar/IQKeyboardManager\n// Copyright (c) 2013-16 Iftekhar Q"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardToolbarManager/IQKeyboardManager+ToolbarManager.swift",
    "chars": 4829,
    "preview": "//\n//  IQKeyboardManager+ToolbarManager.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 20"
  },
  {
    "path": "IQKeyboardManagerSwift/IQKeyboardToolbarManager/IQKeyboardManager+ToolbarManagerDeprecated.swift",
    "chars": 6799,
    "preview": "//\n//  IQKeyboardManager+ToolbarManagerDeprecated.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyri"
  },
  {
    "path": "IQKeyboardManagerSwift/PrivacyInfo.xcprivacy",
    "chars": 373,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "IQKeyboardManagerSwift/Resign/IQKeyboardManager+Resign.swift",
    "chars": 3902,
    "preview": "//\n//  IQKeyboardManager+Resign.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 If"
  },
  {
    "path": "IQKeyboardManagerSwift/Resign/IQKeyboardManager+Resign_Deprecated.swift",
    "chars": 1590,
    "preview": "//\n//  IQKeyboardManager+Resign_Deprecated.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c)"
  },
  {
    "path": "IQKeyboardManagerSwift/Resign/IQKeyboardResignHandler+Internal.swift",
    "chars": 4450,
    "preview": "//\n//  IQKeyboardResignHandler+Internal.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 20"
  },
  {
    "path": "IQKeyboardManagerSwift/Resign/IQKeyboardResignHandler.swift",
    "chars": 5911,
    "preview": "//\n//  IQKeyboardResignHandler.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Ift"
  },
  {
    "path": "IQKeyboardManagerSwift/Resign/UIKItExtensions/UIView+Resign.swift",
    "chars": 2604,
    "preview": "//\n//  UIView+Resign.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar Qura"
  },
  {
    "path": "IQKeyboardManagerSwift/Resign/UIKItExtensions/UIView+ResignObjc.swift",
    "chars": 1762,
    "preview": "//\n//  UIView+ResignObjc.swift\n//  https://github.com/hackiftekhar/IQKeyboardManager\n//  Copyright (c) 2013-24 Iftekhar "
  },
  {
    "path": "IQKeyboardManagerSwift.podspec.json",
    "chars": 2561,
    "preview": "{\n    \"name\": \"IQKeyboardManagerSwift\",\n    \"version\": \"8.0.2\",\n    \"source\": {\n        \"git\": \"https://github.com/hacki"
  },
  {
    "path": "LICENSE.md",
    "chars": 1078,
    "preview": "MIT License\n\nCopyright (c) 2013-2023 Iftekhar Qurashi\n\nPermission is hereby granted, free of charge, to any person obtai"
  },
  {
    "path": "Package.swift",
    "chars": 1431,
    "preview": "// swift-tools-version:5.6\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"IQKeyboardManagerSwift\",\n    pl"
  },
  {
    "path": "README.md",
    "chars": 11750,
    "preview": "<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/Social"
  },
  {
    "path": "SECURITY.md",
    "chars": 1226,
    "preview": "# Security\n\n## Reporting Potential Security Issues\n\nIf you have encountered a potential security vulnerability in this p"
  }
]

About this extraction

This page contains the full source code of the hackiftekhar/IQKeyboardManager GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 158 files (1.1 MB), approximately 261.8k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!