├── .gitignore ├── .travis.yml ├── CHGInputAccessoryView.podspec ├── Example ├── CHGInputAccessoryView.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── CHGInputAccessoryView-Example.xcscheme ├── CHGInputAccessoryView.xcworkspace │ └── contents.xcworkspacedata ├── CHGInputAccessoryView │ ├── CHGAppDelegate.h │ ├── CHGAppDelegate.m │ ├── CHGDockedAccessoryViewController.h │ ├── CHGDockedAccessoryViewController.m │ ├── CHGInputAccessoryView-Info.plist │ ├── CHGInputAccessoryView-Prefix.pch │ ├── CHGMoreViewController.h │ ├── CHGMoreViewController.m │ ├── CHGView.h │ ├── CHGView.m │ ├── CHGViewController.h │ ├── CHGViewController.m │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── LaunchImage.launchimage │ │ │ └── Contents.json │ │ ├── ic_info.imageset │ │ │ ├── Contents.json │ │ │ ├── ic_info.png │ │ │ ├── ic_info@2x.png │ │ │ └── ic_info@3x.png │ │ ├── ic_search.imageset │ │ │ ├── Contents.json │ │ │ ├── ic_search.png │ │ │ ├── ic_search@2x.png │ │ │ └── ic_search@3x.png │ │ └── ic_trash.imageset │ │ │ ├── Contents.json │ │ │ ├── ic_trash.png │ │ │ ├── ic_trash@2x.png │ │ │ └── ic_trash@3x.png │ ├── Main.storyboard │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── CHGInputAccessoryView.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ └── project.pbxproj │ └── Target Support Files │ │ ├── CHGInputAccessoryView │ │ ├── CHGInputAccessoryView-dummy.m │ │ ├── CHGInputAccessoryView-prefix.pch │ │ ├── CHGInputAccessoryView-umbrella.h │ │ ├── CHGInputAccessoryView.modulemap │ │ ├── CHGInputAccessoryView.xcconfig │ │ ├── Info.plist │ │ └── ResourceBundle-CHGInputAccessoryView-Info.plist │ │ ├── Pods-CHGInputAccessoryView_Example │ │ ├── Info.plist │ │ ├── Pods-CHGInputAccessoryView_Example-acknowledgements.markdown │ │ ├── Pods-CHGInputAccessoryView_Example-acknowledgements.plist │ │ ├── Pods-CHGInputAccessoryView_Example-dummy.m │ │ ├── Pods-CHGInputAccessoryView_Example-frameworks.sh │ │ ├── Pods-CHGInputAccessoryView_Example-resources.sh │ │ ├── Pods-CHGInputAccessoryView_Example-umbrella.h │ │ ├── Pods-CHGInputAccessoryView_Example.debug.xcconfig │ │ ├── Pods-CHGInputAccessoryView_Example.modulemap │ │ └── Pods-CHGInputAccessoryView_Example.release.xcconfig │ │ └── Pods-CHGInputAccessoryView_Tests │ │ ├── Info.plist │ │ ├── Pods-CHGInputAccessoryView_Tests-acknowledgements.markdown │ │ ├── Pods-CHGInputAccessoryView_Tests-acknowledgements.plist │ │ ├── Pods-CHGInputAccessoryView_Tests-dummy.m │ │ ├── Pods-CHGInputAccessoryView_Tests-frameworks.sh │ │ ├── Pods-CHGInputAccessoryView_Tests-resources.sh │ │ ├── Pods-CHGInputAccessoryView_Tests-umbrella.h │ │ ├── Pods-CHGInputAccessoryView_Tests.debug.xcconfig │ │ ├── Pods-CHGInputAccessoryView_Tests.modulemap │ │ └── Pods-CHGInputAccessoryView_Tests.release.xcconfig └── Tests │ ├── Tests-Info.plist │ ├── Tests-Prefix.pch │ ├── Tests.m │ └── en.lproj │ └── InfoPlist.strings ├── LICENSE ├── Pod ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── CHGInputAccessoryView.h │ ├── CHGInputAccessoryView.m │ ├── CHGInputAccessoryViewItem.h │ ├── CHGInputAccessoryViewItem.m │ ├── CHGInputAccessoryViewItemSwitch.h │ ├── CHGInputAccessoryViewItemSwitch.m │ ├── CHGInputAccessoryViewItemTextField.h │ ├── CHGInputAccessoryViewItemTextField.m │ ├── CHGInputAccessoryViewItemTextView.h │ └── CHGInputAccessoryViewItemTextView.m ├── README.md ├── _Pods.xcodeproj └── example.gif /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * http://www.objc.io/issue-6/travis-ci.html 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | language: objective-c 6 | # cache: cocoapods 7 | # podfile: Example/Podfile 8 | # before_install: 9 | # - gem install cocoapods # Since Travis is not always on latest version 10 | # - pod install --project-directory=Example 11 | script: 12 | - set -o pipefail && xcodebuild test -workspace Example/CHGInputAccessoryView.xcworkspace -scheme CHGInputAccessoryView-Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty 13 | - pod lib lint 14 | -------------------------------------------------------------------------------- /CHGInputAccessoryView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "CHGInputAccessoryView" 3 | s.version = "2.0.0" 4 | s.summary = "Simply build an inputAccessoryView to show above a keyboard." 5 | s.description = <<-DESC 6 | This pod will help to build an inputAccessoryView as simple and fast as using a UIToolbar. The CHGInputAccessoryView is based on UIToolbar with all its advantages and comes with some prebuild items like a separator, a UITextField, a UITextView or flexible and fixed spaces. 7 | DESC 8 | 9 | s.homepage = "https://github.com/grethi/CHGInputAccessoryView" 10 | s.license = 'MIT' 11 | s.author = { "Christian Greth" => "greth.christian@googlemail.com" } 12 | s.source = { :git => "https://github.com/grethi/CHGInputAccessoryView.git", :tag => s.version.to_s } 13 | 14 | s.platform = :ios, '10.0' 15 | s.requires_arc = true 16 | 17 | s.source_files = 'Pod/Classes/**/*' 18 | s.resource_bundles = { 19 | 'CHGInputAccessoryView' => ['Pod/Assets/*.png'] 20 | } 21 | 22 | s.frameworks = 'UIKit' 23 | 24 | end 25 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 108F5259B7032069CB5306F6 /* Pods_CHGInputAccessoryView_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 658297A054514A93CF0FE954 /* Pods_CHGInputAccessoryView_Tests.framework */; }; 11 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 12 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 13 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 14 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; }; 15 | 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; }; 16 | 6003F59E195388D20070C39A /* CHGAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* CHGAppDelegate.m */; }; 17 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; }; 18 | 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; }; 19 | 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 20 | 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 21 | 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; }; 22 | 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; }; 23 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; 24 | AA42776E1C4ECD97002100CC /* CHGMoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AA42776D1C4ECD97002100CC /* CHGMoreViewController.m */; }; 25 | AAD72B791C4025D800C9B978 /* CHGDockedAccessoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AAD72B781C4025D800C9B978 /* CHGDockedAccessoryViewController.m */; }; 26 | AAD72B831C40636C00C9B978 /* CHGView.m in Sources */ = {isa = PBXBuildFile; fileRef = AAD72B821C40636C00C9B978 /* CHGView.m */; }; 27 | AAD72B861C4064E100C9B978 /* CHGViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AAD72B851C4064E100C9B978 /* CHGViewController.m */; }; 28 | EA15D03BEC6189C0F334FDBB /* Pods_CHGInputAccessoryView_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10D726F4AF9E7B003E71C41D /* Pods_CHGInputAccessoryView_Example.framework */; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXContainerItemProxy section */ 32 | 6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = 6003F582195388D10070C39A /* Project object */; 35 | proxyType = 1; 36 | remoteGlobalIDString = 6003F589195388D20070C39A; 37 | remoteInfo = CHGInputAccessoryView; 38 | }; 39 | /* End PBXContainerItemProxy section */ 40 | 41 | /* Begin PBXFileReference section */ 42 | 10D726F4AF9E7B003E71C41D /* Pods_CHGInputAccessoryView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CHGInputAccessoryView_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | 44544BBB690532008F609085 /* Pods-CHGInputAccessoryView_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CHGInputAccessoryView_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.release.xcconfig"; sourceTree = ""; }; 44 | 48E16C9808FFC9B4B4ACF108 /* Pods-CHGInputAccessoryView_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CHGInputAccessoryView_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.release.xcconfig"; sourceTree = ""; }; 45 | 6003F58A195388D20070C39A /* CHGInputAccessoryView_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CHGInputAccessoryView_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 46 | 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 47 | 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 48 | 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 49 | 6003F595195388D20070C39A /* CHGInputAccessoryView-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CHGInputAccessoryView-Info.plist"; sourceTree = ""; }; 50 | 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 51 | 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 52 | 6003F59B195388D20070C39A /* CHGInputAccessoryView-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CHGInputAccessoryView-Prefix.pch"; sourceTree = ""; }; 53 | 6003F59C195388D20070C39A /* CHGAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CHGAppDelegate.h; sourceTree = ""; }; 54 | 6003F59D195388D20070C39A /* CHGAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CHGAppDelegate.m; sourceTree = ""; }; 55 | 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 56 | 6003F5AE195388D20070C39A /* CHGInputAccessoryView_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CHGInputAccessoryView_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 58 | 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; 59 | 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 60 | 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = ""; }; 61 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = ""; }; 62 | 634FCA180D9EE359200B3D8C /* Pods-CHGInputAccessoryView_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CHGInputAccessoryView_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.debug.xcconfig"; sourceTree = ""; }; 63 | 658297A054514A93CF0FE954 /* Pods_CHGInputAccessoryView_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CHGInputAccessoryView_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 64 | 7222FCB048322FC20D6C48E6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 65 | 7B9E01F43DA0960A03037560 /* Pods-CHGInputAccessoryView_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CHGInputAccessoryView_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.debug.xcconfig"; sourceTree = ""; }; 66 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; 67 | 944F9F39977EACA52DD19AB7 /* CHGInputAccessoryView.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = CHGInputAccessoryView.podspec; path = ../CHGInputAccessoryView.podspec; sourceTree = ""; }; 68 | AA42776C1C4ECD97002100CC /* CHGMoreViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGMoreViewController.h; sourceTree = ""; }; 69 | AA42776D1C4ECD97002100CC /* CHGMoreViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGMoreViewController.m; sourceTree = ""; }; 70 | AAD72B771C4025D800C9B978 /* CHGDockedAccessoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGDockedAccessoryViewController.h; sourceTree = ""; }; 71 | AAD72B781C4025D800C9B978 /* CHGDockedAccessoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGDockedAccessoryViewController.m; sourceTree = ""; }; 72 | AAD72B811C40636C00C9B978 /* CHGView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGView.h; sourceTree = ""; }; 73 | AAD72B821C40636C00C9B978 /* CHGView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGView.m; sourceTree = ""; }; 74 | AAD72B841C4064E100C9B978 /* CHGViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGViewController.h; sourceTree = ""; }; 75 | AAD72B851C4064E100C9B978 /* CHGViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGViewController.m; sourceTree = ""; }; 76 | B6353C4018DAC8CA664951BE /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 77 | /* End PBXFileReference section */ 78 | 79 | /* Begin PBXFrameworksBuildPhase section */ 80 | 6003F587195388D20070C39A /* Frameworks */ = { 81 | isa = PBXFrameworksBuildPhase; 82 | buildActionMask = 2147483647; 83 | files = ( 84 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, 85 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */, 86 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, 87 | EA15D03BEC6189C0F334FDBB /* Pods_CHGInputAccessoryView_Example.framework in Frameworks */, 88 | ); 89 | runOnlyForDeploymentPostprocessing = 0; 90 | }; 91 | 6003F5AB195388D20070C39A /* Frameworks */ = { 92 | isa = PBXFrameworksBuildPhase; 93 | buildActionMask = 2147483647; 94 | files = ( 95 | 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */, 96 | 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */, 97 | 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */, 98 | 108F5259B7032069CB5306F6 /* Pods_CHGInputAccessoryView_Tests.framework in Frameworks */, 99 | ); 100 | runOnlyForDeploymentPostprocessing = 0; 101 | }; 102 | /* End PBXFrameworksBuildPhase section */ 103 | 104 | /* Begin PBXGroup section */ 105 | 4028C220486BD11FEAA359D4 /* Pods */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 7B9E01F43DA0960A03037560 /* Pods-CHGInputAccessoryView_Example.debug.xcconfig */, 109 | 44544BBB690532008F609085 /* Pods-CHGInputAccessoryView_Example.release.xcconfig */, 110 | 634FCA180D9EE359200B3D8C /* Pods-CHGInputAccessoryView_Tests.debug.xcconfig */, 111 | 48E16C9808FFC9B4B4ACF108 /* Pods-CHGInputAccessoryView_Tests.release.xcconfig */, 112 | ); 113 | name = Pods; 114 | sourceTree = ""; 115 | }; 116 | 6003F581195388D10070C39A = { 117 | isa = PBXGroup; 118 | children = ( 119 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 120 | 6003F593195388D20070C39A /* Example for CHGInputAccessoryView */, 121 | 6003F5B5195388D20070C39A /* Tests */, 122 | 6003F58C195388D20070C39A /* Frameworks */, 123 | 6003F58B195388D20070C39A /* Products */, 124 | 4028C220486BD11FEAA359D4 /* Pods */, 125 | ); 126 | sourceTree = ""; 127 | }; 128 | 6003F58B195388D20070C39A /* Products */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | 6003F58A195388D20070C39A /* CHGInputAccessoryView_Example.app */, 132 | 6003F5AE195388D20070C39A /* CHGInputAccessoryView_Tests.xctest */, 133 | ); 134 | name = Products; 135 | sourceTree = ""; 136 | }; 137 | 6003F58C195388D20070C39A /* Frameworks */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 6003F58D195388D20070C39A /* Foundation.framework */, 141 | 6003F58F195388D20070C39A /* CoreGraphics.framework */, 142 | 6003F591195388D20070C39A /* UIKit.framework */, 143 | 6003F5AF195388D20070C39A /* XCTest.framework */, 144 | 10D726F4AF9E7B003E71C41D /* Pods_CHGInputAccessoryView_Example.framework */, 145 | 658297A054514A93CF0FE954 /* Pods_CHGInputAccessoryView_Tests.framework */, 146 | ); 147 | name = Frameworks; 148 | sourceTree = ""; 149 | }; 150 | 6003F593195388D20070C39A /* Example for CHGInputAccessoryView */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | 6003F59C195388D20070C39A /* CHGAppDelegate.h */, 154 | 6003F59D195388D20070C39A /* CHGAppDelegate.m */, 155 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */, 156 | 6003F5A8195388D20070C39A /* Images.xcassets */, 157 | 6003F594195388D20070C39A /* Supporting Files */, 158 | AAD72B811C40636C00C9B978 /* CHGView.h */, 159 | AAD72B821C40636C00C9B978 /* CHGView.m */, 160 | AAD72B771C4025D800C9B978 /* CHGDockedAccessoryViewController.h */, 161 | AAD72B781C4025D800C9B978 /* CHGDockedAccessoryViewController.m */, 162 | AAD72B841C4064E100C9B978 /* CHGViewController.h */, 163 | AAD72B851C4064E100C9B978 /* CHGViewController.m */, 164 | AA42776C1C4ECD97002100CC /* CHGMoreViewController.h */, 165 | AA42776D1C4ECD97002100CC /* CHGMoreViewController.m */, 166 | ); 167 | name = "Example for CHGInputAccessoryView"; 168 | path = CHGInputAccessoryView; 169 | sourceTree = ""; 170 | }; 171 | 6003F594195388D20070C39A /* Supporting Files */ = { 172 | isa = PBXGroup; 173 | children = ( 174 | 6003F595195388D20070C39A /* CHGInputAccessoryView-Info.plist */, 175 | 6003F596195388D20070C39A /* InfoPlist.strings */, 176 | 6003F599195388D20070C39A /* main.m */, 177 | 6003F59B195388D20070C39A /* CHGInputAccessoryView-Prefix.pch */, 178 | ); 179 | name = "Supporting Files"; 180 | sourceTree = ""; 181 | }; 182 | 6003F5B5195388D20070C39A /* Tests */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | 6003F5BB195388D20070C39A /* Tests.m */, 186 | 6003F5B6195388D20070C39A /* Supporting Files */, 187 | ); 188 | path = Tests; 189 | sourceTree = ""; 190 | }; 191 | 6003F5B6195388D20070C39A /* Supporting Files */ = { 192 | isa = PBXGroup; 193 | children = ( 194 | 6003F5B7195388D20070C39A /* Tests-Info.plist */, 195 | 6003F5B8195388D20070C39A /* InfoPlist.strings */, 196 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */, 197 | ); 198 | name = "Supporting Files"; 199 | sourceTree = ""; 200 | }; 201 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = { 202 | isa = PBXGroup; 203 | children = ( 204 | 944F9F39977EACA52DD19AB7 /* CHGInputAccessoryView.podspec */, 205 | B6353C4018DAC8CA664951BE /* README.md */, 206 | 7222FCB048322FC20D6C48E6 /* LICENSE */, 207 | ); 208 | name = "Podspec Metadata"; 209 | sourceTree = ""; 210 | }; 211 | /* End PBXGroup section */ 212 | 213 | /* Begin PBXNativeTarget section */ 214 | 6003F589195388D20070C39A /* CHGInputAccessoryView_Example */ = { 215 | isa = PBXNativeTarget; 216 | buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView_Example" */; 217 | buildPhases = ( 218 | F9FF64892E8E6F313712B6C0 /* [CP] Check Pods Manifest.lock */, 219 | 6003F586195388D20070C39A /* Sources */, 220 | 6003F587195388D20070C39A /* Frameworks */, 221 | 6003F588195388D20070C39A /* Resources */, 222 | 180E69AC5A42711EDE710470 /* [CP] Embed Pods Frameworks */, 223 | AC50FD209E7F493BD1740C21 /* [CP] Copy Pods Resources */, 224 | ); 225 | buildRules = ( 226 | ); 227 | dependencies = ( 228 | ); 229 | name = CHGInputAccessoryView_Example; 230 | productName = CHGInputAccessoryView; 231 | productReference = 6003F58A195388D20070C39A /* CHGInputAccessoryView_Example.app */; 232 | productType = "com.apple.product-type.application"; 233 | }; 234 | 6003F5AD195388D20070C39A /* CHGInputAccessoryView_Tests */ = { 235 | isa = PBXNativeTarget; 236 | buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView_Tests" */; 237 | buildPhases = ( 238 | 79FC8B1082DD0659FEBC4A44 /* [CP] Check Pods Manifest.lock */, 239 | 6003F5AA195388D20070C39A /* Sources */, 240 | 6003F5AB195388D20070C39A /* Frameworks */, 241 | 6003F5AC195388D20070C39A /* Resources */, 242 | 0E90C8F20590F44894B748AD /* [CP] Embed Pods Frameworks */, 243 | 45C6E96CB6ED1A817712988F /* [CP] Copy Pods Resources */, 244 | ); 245 | buildRules = ( 246 | ); 247 | dependencies = ( 248 | 6003F5B4195388D20070C39A /* PBXTargetDependency */, 249 | ); 250 | name = CHGInputAccessoryView_Tests; 251 | productName = CHGInputAccessoryViewTests; 252 | productReference = 6003F5AE195388D20070C39A /* CHGInputAccessoryView_Tests.xctest */; 253 | productType = "com.apple.product-type.bundle.unit-test"; 254 | }; 255 | /* End PBXNativeTarget section */ 256 | 257 | /* Begin PBXProject section */ 258 | 6003F582195388D10070C39A /* Project object */ = { 259 | isa = PBXProject; 260 | attributes = { 261 | CLASSPREFIX = CHG; 262 | LastUpgradeCheck = 0830; 263 | ORGANIZATIONNAME = Christian; 264 | TargetAttributes = { 265 | 6003F5AD195388D20070C39A = { 266 | TestTargetID = 6003F589195388D20070C39A; 267 | }; 268 | }; 269 | }; 270 | buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "CHGInputAccessoryView" */; 271 | compatibilityVersion = "Xcode 3.2"; 272 | developmentRegion = English; 273 | hasScannedForEncodings = 0; 274 | knownRegions = ( 275 | en, 276 | Base, 277 | ); 278 | mainGroup = 6003F581195388D10070C39A; 279 | productRefGroup = 6003F58B195388D20070C39A /* Products */; 280 | projectDirPath = ""; 281 | projectRoot = ""; 282 | targets = ( 283 | 6003F589195388D20070C39A /* CHGInputAccessoryView_Example */, 284 | 6003F5AD195388D20070C39A /* CHGInputAccessoryView_Tests */, 285 | ); 286 | }; 287 | /* End PBXProject section */ 288 | 289 | /* Begin PBXResourcesBuildPhase section */ 290 | 6003F588195388D20070C39A /* Resources */ = { 291 | isa = PBXResourcesBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */, 295 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */, 296 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */, 297 | ); 298 | runOnlyForDeploymentPostprocessing = 0; 299 | }; 300 | 6003F5AC195388D20070C39A /* Resources */ = { 301 | isa = PBXResourcesBuildPhase; 302 | buildActionMask = 2147483647; 303 | files = ( 304 | 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */, 305 | ); 306 | runOnlyForDeploymentPostprocessing = 0; 307 | }; 308 | /* End PBXResourcesBuildPhase section */ 309 | 310 | /* Begin PBXShellScriptBuildPhase section */ 311 | 0E90C8F20590F44894B748AD /* [CP] Embed Pods Frameworks */ = { 312 | isa = PBXShellScriptBuildPhase; 313 | buildActionMask = 2147483647; 314 | files = ( 315 | ); 316 | inputPaths = ( 317 | ); 318 | name = "[CP] Embed Pods Frameworks"; 319 | outputPaths = ( 320 | ); 321 | runOnlyForDeploymentPostprocessing = 0; 322 | shellPath = /bin/sh; 323 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-frameworks.sh\"\n"; 324 | showEnvVarsInLog = 0; 325 | }; 326 | 180E69AC5A42711EDE710470 /* [CP] Embed Pods Frameworks */ = { 327 | isa = PBXShellScriptBuildPhase; 328 | buildActionMask = 2147483647; 329 | files = ( 330 | ); 331 | inputPaths = ( 332 | ); 333 | name = "[CP] Embed Pods Frameworks"; 334 | outputPaths = ( 335 | ); 336 | runOnlyForDeploymentPostprocessing = 0; 337 | shellPath = /bin/sh; 338 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-frameworks.sh\"\n"; 339 | showEnvVarsInLog = 0; 340 | }; 341 | 45C6E96CB6ED1A817712988F /* [CP] Copy Pods Resources */ = { 342 | isa = PBXShellScriptBuildPhase; 343 | buildActionMask = 2147483647; 344 | files = ( 345 | ); 346 | inputPaths = ( 347 | ); 348 | name = "[CP] Copy Pods Resources"; 349 | outputPaths = ( 350 | ); 351 | runOnlyForDeploymentPostprocessing = 0; 352 | shellPath = /bin/sh; 353 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-resources.sh\"\n"; 354 | showEnvVarsInLog = 0; 355 | }; 356 | 79FC8B1082DD0659FEBC4A44 /* [CP] Check Pods Manifest.lock */ = { 357 | isa = PBXShellScriptBuildPhase; 358 | buildActionMask = 2147483647; 359 | files = ( 360 | ); 361 | inputPaths = ( 362 | ); 363 | name = "[CP] Check Pods Manifest.lock"; 364 | outputPaths = ( 365 | ); 366 | runOnlyForDeploymentPostprocessing = 0; 367 | shellPath = /bin/sh; 368 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 369 | showEnvVarsInLog = 0; 370 | }; 371 | AC50FD209E7F493BD1740C21 /* [CP] Copy Pods Resources */ = { 372 | isa = PBXShellScriptBuildPhase; 373 | buildActionMask = 2147483647; 374 | files = ( 375 | ); 376 | inputPaths = ( 377 | ); 378 | name = "[CP] Copy Pods Resources"; 379 | outputPaths = ( 380 | ); 381 | runOnlyForDeploymentPostprocessing = 0; 382 | shellPath = /bin/sh; 383 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-resources.sh\"\n"; 384 | showEnvVarsInLog = 0; 385 | }; 386 | F9FF64892E8E6F313712B6C0 /* [CP] Check Pods Manifest.lock */ = { 387 | isa = PBXShellScriptBuildPhase; 388 | buildActionMask = 2147483647; 389 | files = ( 390 | ); 391 | inputPaths = ( 392 | ); 393 | name = "[CP] Check Pods Manifest.lock"; 394 | outputPaths = ( 395 | ); 396 | runOnlyForDeploymentPostprocessing = 0; 397 | shellPath = /bin/sh; 398 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 399 | showEnvVarsInLog = 0; 400 | }; 401 | /* End PBXShellScriptBuildPhase section */ 402 | 403 | /* Begin PBXSourcesBuildPhase section */ 404 | 6003F586195388D20070C39A /* Sources */ = { 405 | isa = PBXSourcesBuildPhase; 406 | buildActionMask = 2147483647; 407 | files = ( 408 | 6003F59E195388D20070C39A /* CHGAppDelegate.m in Sources */, 409 | AAD72B861C4064E100C9B978 /* CHGViewController.m in Sources */, 410 | AA42776E1C4ECD97002100CC /* CHGMoreViewController.m in Sources */, 411 | AAD72B831C40636C00C9B978 /* CHGView.m in Sources */, 412 | 6003F59A195388D20070C39A /* main.m in Sources */, 413 | AAD72B791C4025D800C9B978 /* CHGDockedAccessoryViewController.m in Sources */, 414 | ); 415 | runOnlyForDeploymentPostprocessing = 0; 416 | }; 417 | 6003F5AA195388D20070C39A /* Sources */ = { 418 | isa = PBXSourcesBuildPhase; 419 | buildActionMask = 2147483647; 420 | files = ( 421 | 6003F5BC195388D20070C39A /* Tests.m in Sources */, 422 | ); 423 | runOnlyForDeploymentPostprocessing = 0; 424 | }; 425 | /* End PBXSourcesBuildPhase section */ 426 | 427 | /* Begin PBXTargetDependency section */ 428 | 6003F5B4195388D20070C39A /* PBXTargetDependency */ = { 429 | isa = PBXTargetDependency; 430 | target = 6003F589195388D20070C39A /* CHGInputAccessoryView_Example */; 431 | targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */; 432 | }; 433 | /* End PBXTargetDependency section */ 434 | 435 | /* Begin PBXVariantGroup section */ 436 | 6003F596195388D20070C39A /* InfoPlist.strings */ = { 437 | isa = PBXVariantGroup; 438 | children = ( 439 | 6003F597195388D20070C39A /* en */, 440 | ); 441 | name = InfoPlist.strings; 442 | sourceTree = ""; 443 | }; 444 | 6003F5B8195388D20070C39A /* InfoPlist.strings */ = { 445 | isa = PBXVariantGroup; 446 | children = ( 447 | 6003F5B9195388D20070C39A /* en */, 448 | ); 449 | name = InfoPlist.strings; 450 | sourceTree = ""; 451 | }; 452 | /* End PBXVariantGroup section */ 453 | 454 | /* Begin XCBuildConfiguration section */ 455 | 6003F5BD195388D20070C39A /* Debug */ = { 456 | isa = XCBuildConfiguration; 457 | buildSettings = { 458 | ALWAYS_SEARCH_USER_PATHS = NO; 459 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 460 | CLANG_CXX_LIBRARY = "libc++"; 461 | CLANG_ENABLE_MODULES = YES; 462 | CLANG_ENABLE_OBJC_ARC = YES; 463 | CLANG_WARN_BOOL_CONVERSION = YES; 464 | CLANG_WARN_CONSTANT_CONVERSION = YES; 465 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 466 | CLANG_WARN_EMPTY_BODY = YES; 467 | CLANG_WARN_ENUM_CONVERSION = YES; 468 | CLANG_WARN_INFINITE_RECURSION = YES; 469 | CLANG_WARN_INT_CONVERSION = YES; 470 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 471 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 472 | CLANG_WARN_UNREACHABLE_CODE = YES; 473 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 474 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 475 | COPY_PHASE_STRIP = NO; 476 | ENABLE_STRICT_OBJC_MSGSEND = YES; 477 | ENABLE_TESTABILITY = YES; 478 | GCC_C_LANGUAGE_STANDARD = gnu99; 479 | GCC_DYNAMIC_NO_PIC = NO; 480 | GCC_NO_COMMON_BLOCKS = YES; 481 | GCC_OPTIMIZATION_LEVEL = 0; 482 | GCC_PREPROCESSOR_DEFINITIONS = ( 483 | "DEBUG=1", 484 | "$(inherited)", 485 | ); 486 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 487 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 488 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 489 | GCC_WARN_UNDECLARED_SELECTOR = YES; 490 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 491 | GCC_WARN_UNUSED_FUNCTION = YES; 492 | GCC_WARN_UNUSED_VARIABLE = YES; 493 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 494 | ONLY_ACTIVE_ARCH = YES; 495 | SDKROOT = iphoneos; 496 | TARGETED_DEVICE_FAMILY = "1,2"; 497 | }; 498 | name = Debug; 499 | }; 500 | 6003F5BE195388D20070C39A /* Release */ = { 501 | isa = XCBuildConfiguration; 502 | buildSettings = { 503 | ALWAYS_SEARCH_USER_PATHS = NO; 504 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 505 | CLANG_CXX_LIBRARY = "libc++"; 506 | CLANG_ENABLE_MODULES = YES; 507 | CLANG_ENABLE_OBJC_ARC = YES; 508 | CLANG_WARN_BOOL_CONVERSION = YES; 509 | CLANG_WARN_CONSTANT_CONVERSION = YES; 510 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 511 | CLANG_WARN_EMPTY_BODY = YES; 512 | CLANG_WARN_ENUM_CONVERSION = YES; 513 | CLANG_WARN_INFINITE_RECURSION = YES; 514 | CLANG_WARN_INT_CONVERSION = YES; 515 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 516 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 517 | CLANG_WARN_UNREACHABLE_CODE = YES; 518 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 519 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 520 | COPY_PHASE_STRIP = YES; 521 | ENABLE_NS_ASSERTIONS = NO; 522 | ENABLE_STRICT_OBJC_MSGSEND = YES; 523 | GCC_C_LANGUAGE_STANDARD = gnu99; 524 | GCC_NO_COMMON_BLOCKS = YES; 525 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 526 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 527 | GCC_WARN_UNDECLARED_SELECTOR = YES; 528 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 529 | GCC_WARN_UNUSED_FUNCTION = YES; 530 | GCC_WARN_UNUSED_VARIABLE = YES; 531 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 532 | SDKROOT = iphoneos; 533 | TARGETED_DEVICE_FAMILY = "1,2"; 534 | VALIDATE_PRODUCT = YES; 535 | }; 536 | name = Release; 537 | }; 538 | 6003F5C0195388D20070C39A /* Debug */ = { 539 | isa = XCBuildConfiguration; 540 | baseConfigurationReference = 7B9E01F43DA0960A03037560 /* Pods-CHGInputAccessoryView_Example.debug.xcconfig */; 541 | buildSettings = { 542 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 543 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 544 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 545 | GCC_PREFIX_HEADER = "CHGInputAccessoryView/CHGInputAccessoryView-Prefix.pch"; 546 | INFOPLIST_FILE = "CHGInputAccessoryView/CHGInputAccessoryView-Info.plist"; 547 | MODULE_NAME = ExampleApp; 548 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 549 | PRODUCT_NAME = "$(TARGET_NAME)"; 550 | WRAPPER_EXTENSION = app; 551 | }; 552 | name = Debug; 553 | }; 554 | 6003F5C1195388D20070C39A /* Release */ = { 555 | isa = XCBuildConfiguration; 556 | baseConfigurationReference = 44544BBB690532008F609085 /* Pods-CHGInputAccessoryView_Example.release.xcconfig */; 557 | buildSettings = { 558 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 559 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 560 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 561 | GCC_PREFIX_HEADER = "CHGInputAccessoryView/CHGInputAccessoryView-Prefix.pch"; 562 | INFOPLIST_FILE = "CHGInputAccessoryView/CHGInputAccessoryView-Info.plist"; 563 | MODULE_NAME = ExampleApp; 564 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 565 | PRODUCT_NAME = "$(TARGET_NAME)"; 566 | WRAPPER_EXTENSION = app; 567 | }; 568 | name = Release; 569 | }; 570 | 6003F5C3195388D20070C39A /* Debug */ = { 571 | isa = XCBuildConfiguration; 572 | baseConfigurationReference = 634FCA180D9EE359200B3D8C /* Pods-CHGInputAccessoryView_Tests.debug.xcconfig */; 573 | buildSettings = { 574 | BUNDLE_LOADER = "$(TEST_HOST)"; 575 | FRAMEWORK_SEARCH_PATHS = ( 576 | "$(SDKROOT)/Developer/Library/Frameworks", 577 | "$(inherited)", 578 | "$(DEVELOPER_FRAMEWORKS_DIR)", 579 | ); 580 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 581 | GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; 582 | GCC_PREPROCESSOR_DEFINITIONS = ( 583 | "DEBUG=1", 584 | "$(inherited)", 585 | ); 586 | INFOPLIST_FILE = "Tests/Tests-Info.plist"; 587 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 588 | PRODUCT_NAME = "$(TARGET_NAME)"; 589 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CHGInputAccessoryView_Example.app/CHGInputAccessoryView_Example"; 590 | WRAPPER_EXTENSION = xctest; 591 | }; 592 | name = Debug; 593 | }; 594 | 6003F5C4195388D20070C39A /* Release */ = { 595 | isa = XCBuildConfiguration; 596 | baseConfigurationReference = 48E16C9808FFC9B4B4ACF108 /* Pods-CHGInputAccessoryView_Tests.release.xcconfig */; 597 | buildSettings = { 598 | BUNDLE_LOADER = "$(TEST_HOST)"; 599 | FRAMEWORK_SEARCH_PATHS = ( 600 | "$(SDKROOT)/Developer/Library/Frameworks", 601 | "$(inherited)", 602 | "$(DEVELOPER_FRAMEWORKS_DIR)", 603 | ); 604 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 605 | GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; 606 | INFOPLIST_FILE = "Tests/Tests-Info.plist"; 607 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 608 | PRODUCT_NAME = "$(TARGET_NAME)"; 609 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CHGInputAccessoryView_Example.app/CHGInputAccessoryView_Example"; 610 | WRAPPER_EXTENSION = xctest; 611 | }; 612 | name = Release; 613 | }; 614 | /* End XCBuildConfiguration section */ 615 | 616 | /* Begin XCConfigurationList section */ 617 | 6003F585195388D10070C39A /* Build configuration list for PBXProject "CHGInputAccessoryView" */ = { 618 | isa = XCConfigurationList; 619 | buildConfigurations = ( 620 | 6003F5BD195388D20070C39A /* Debug */, 621 | 6003F5BE195388D20070C39A /* Release */, 622 | ); 623 | defaultConfigurationIsVisible = 0; 624 | defaultConfigurationName = Release; 625 | }; 626 | 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView_Example" */ = { 627 | isa = XCConfigurationList; 628 | buildConfigurations = ( 629 | 6003F5C0195388D20070C39A /* Debug */, 630 | 6003F5C1195388D20070C39A /* Release */, 631 | ); 632 | defaultConfigurationIsVisible = 0; 633 | defaultConfigurationName = Release; 634 | }; 635 | 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView_Tests" */ = { 636 | isa = XCConfigurationList; 637 | buildConfigurations = ( 638 | 6003F5C3195388D20070C39A /* Debug */, 639 | 6003F5C4195388D20070C39A /* Release */, 640 | ); 641 | defaultConfigurationIsVisible = 0; 642 | defaultConfigurationName = Release; 643 | }; 644 | /* End XCConfigurationList section */ 645 | }; 646 | rootObject = 6003F582195388D10070C39A /* Project object */; 647 | } 648 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView.xcodeproj/xcshareddata/xcschemes/CHGInputAccessoryView-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGAppDelegate.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | @import UIKit; 22 | 23 | @interface CHGAppDelegate : UIResponder 24 | 25 | @property (strong, nonatomic) UIWindow *window; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGAppDelegate.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGAppDelegate.h" 22 | 23 | @implementation CHGAppDelegate 24 | 25 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 26 | { 27 | // Override point for customization after application launch. 28 | return YES; 29 | } 30 | 31 | - (void)applicationWillResignActive:(UIApplication *)application 32 | { 33 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 34 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 35 | } 36 | 37 | - (void)applicationDidEnterBackground:(UIApplication *)application 38 | { 39 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 40 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 41 | } 42 | 43 | - (void)applicationWillEnterForeground:(UIApplication *)application 44 | { 45 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 46 | } 47 | 48 | - (void)applicationDidBecomeActive:(UIApplication *)application 49 | { 50 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 51 | } 52 | 53 | - (void)applicationWillTerminate:(UIApplication *)application 54 | { 55 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGDockedAccessoryViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | #import "CHGInputAccessoryView.h" 24 | 25 | @interface CHGDockedAccessoryViewController : UIViewController 26 | 27 | @property (nonatomic, readwrite, retain) UIView *inputAccessoryView; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGDockedAccessoryViewController.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGDockedAccessoryViewController.h" 22 | 23 | @implementation CHGDockedAccessoryViewController { 24 | CHGInputAccessoryView *_accessoryView; 25 | } 26 | 27 | - (void)viewDidLoad 28 | { 29 | self.title = @"On Controller"; 30 | 31 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"More" style:UIBarButtonItemStylePlain target:self action:@selector(didTapButton:)]; 32 | 33 | [self prepareInputAccessoryView]; 34 | } 35 | 36 | - (void)prepareInputAccessoryView 37 | { 38 | _accessoryView = [CHGInputAccessoryView inputAccessoryViewTextViewWithButtonTitle:@"Cancel" textViewDelegate:self]; 39 | 40 | _accessoryView.inputAccessoryViewDelegate = self; 41 | 42 | [_accessoryView disableItemAtIndex:1]; 43 | 44 | self.inputAccessoryView = _accessoryView; 45 | } 46 | 47 | - (BOOL)canBecomeFirstResponder 48 | { 49 | return YES; 50 | } 51 | 52 | - (BOOL)becomeFirstResponder 53 | { 54 | [_accessoryView resizeToHeight:_accessoryView.defaultHeight]; 55 | return [super becomeFirstResponder]; 56 | } 57 | 58 | - (BOOL)resignFirstResponder 59 | { 60 | [_accessoryView updateHeight]; 61 | return [super resignFirstResponder]; 62 | } 63 | 64 | - (void)didTapButton:(id)button 65 | { 66 | if ([button isKindOfClass:[UIBarButtonItem class]]) { 67 | [self performSegueWithIdentifier:@"moreAccessoryView" sender:self]; 68 | 69 | return; 70 | } 71 | } 72 | 73 | #pragma mark - CHGInputAccessoryViewDelegate 74 | 75 | - (void)didTapItem:(CHGInputAccessoryViewItem *)item 76 | { 77 | NSLog(@"Tapped item..."); 78 | } 79 | 80 | - (void)didTapItemAtIndex:(NSUInteger)index 81 | { 82 | NSLog(@"Tapped item at index %lu...", (unsigned long)index); 83 | 84 | if (index == 1) { 85 | 86 | [_accessoryView disableItemAtIndex:index]; 87 | 88 | [self becomeFirstResponder]; 89 | } 90 | } 91 | 92 | # pragma mark - UITextViewDelegate 93 | 94 | - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 95 | { 96 | return YES; 97 | } 98 | 99 | - (BOOL)textViewShouldBeginEditing:(UITextView *)textView 100 | { 101 | [_accessoryView enableItemAtIndex:1]; 102 | 103 | return YES; 104 | } 105 | 106 | - (BOOL)textViewShouldEndEditing:(UITextView *)textView 107 | { 108 | [self becomeFirstResponder]; 109 | 110 | return YES; 111 | } 112 | 113 | @end 114 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGInputAccessoryView-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGInputAccessoryView-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGMoreViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | #import "CHGInputAccessoryView.h" 24 | 25 | @interface CHGMoreViewController : UIViewController 26 | 27 | @property (nonatomic, readwrite, retain) UIView *inputAccessoryView; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGMoreViewController.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGMoreViewController.h" 22 | 23 | #import "CHGInputAccessoryViewItemTextField.h" 24 | #import "CHGInputAccessoryViewItemSwitch.h" 25 | 26 | @implementation CHGMoreViewController { 27 | CHGInputAccessoryView *_accessoryView; 28 | NSTimer *_progressTimer; 29 | } 30 | 31 | - (void)viewDidLoad 32 | { 33 | self.title = @"More Items"; 34 | 35 | [self prepareInputAccessoryView]; 36 | } 37 | 38 | - (void)prepareInputAccessoryView 39 | { 40 | _accessoryView = [CHGInputAccessoryView inputAccessoryView]; 41 | 42 | [_accessoryView setItems:@[ [CHGInputAccessoryViewItemTextField item], 43 | [CHGInputAccessoryViewItemSwitch item] ]]; 44 | 45 | _accessoryView.inputAccessoryViewDelegate = self; 46 | 47 | self.inputAccessoryView = _accessoryView; 48 | } 49 | 50 | - (BOOL)canBecomeFirstResponder 51 | { 52 | return YES; 53 | } 54 | 55 | - (void)incrementProgress 56 | { 57 | CGFloat newValue = _accessoryView.progressView.progress + 0.05f; 58 | _accessoryView.progressView.progress = newValue; 59 | } 60 | 61 | #pragma mark - CHGInputAccessoryViewDelegate 62 | 63 | - (void)didTapItem:(CHGInputAccessoryViewItem *)item 64 | { 65 | NSLog(@"Tapped item..."); 66 | 67 | if ([item isKindOfClass:[CHGInputAccessoryViewItemSwitch class]]) { 68 | CHGInputAccessoryViewItemSwitch *switchItem = (CHGInputAccessoryViewItemSwitch *)item; 69 | 70 | if (switchItem.switchView.on) { 71 | _progressTimer = [NSTimer scheduledTimerWithTimeInterval:0.05f target:self selector:@selector(incrementProgress) userInfo:nil repeats:YES]; 72 | } else { 73 | [_progressTimer invalidate]; 74 | _accessoryView.progressView.progress = 0.f; 75 | } 76 | } 77 | } 78 | 79 | - (void)didTapItemAtIndex:(NSUInteger)index 80 | { 81 | NSLog(@"Tapped item at index %lu...", (unsigned long)index); 82 | } 83 | 84 | @end 85 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGView.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | @interface CHGView : UIView 24 | 25 | @property (nonatomic, readwrite, retain) UIView *inputAccessoryView; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGView.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGView.h" 22 | 23 | #import "CHGInputAccessoryView.h" 24 | 25 | @implementation CHGView 26 | 27 | - (BOOL)canBecomeFirstResponder 28 | { 29 | return YES; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGViewController.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | #import "CHGInputAccessoryView.h" 24 | #import "CHGInputAccessoryViewItemTextField.h" 25 | 26 | @interface CHGViewController : UIViewController 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/CHGViewController.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGViewController.h" 22 | 23 | #import "CHGView.h" 24 | 25 | @implementation CHGViewController { 26 | CHGInputAccessoryViewItemTextField *_textFieldItem; 27 | } 28 | 29 | - (void)viewDidLoad 30 | { 31 | self.title = @"On View"; 32 | 33 | UIButton *show = [[UIButton alloc] init]; 34 | [show setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 35 | [show setTitle:@"Show accessoryView!" forState:UIControlStateNormal]; 36 | [show sizeToFit]; 37 | [show addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside]; 38 | show.center = CGPointMake(self.view.center.x, 100); 39 | [self.view addSubview:show]; 40 | 41 | UIButton *showWithKeyboard = [[UIButton alloc] init]; 42 | [showWithKeyboard setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 43 | [showWithKeyboard setTitle:@"Show accessoryView with keyboard!" forState:UIControlStateNormal]; 44 | [showWithKeyboard sizeToFit]; 45 | [showWithKeyboard addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside]; 46 | showWithKeyboard.center = CGPointMake(self.view.center.x, 150); 47 | showWithKeyboard.tag = 99; 48 | [self.view addSubview:showWithKeyboard]; 49 | 50 | UIButton *hide = [[UIButton alloc] init]; 51 | [hide setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 52 | [hide setTitle:@"Hide accessoryView!" forState:UIControlStateNormal]; 53 | [hide sizeToFit]; 54 | [hide addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside]; 55 | hide.center = CGPointMake(self.view.center.x, 200); 56 | hide.tag = 98; 57 | [self.view addSubview:hide]; 58 | 59 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"On Controller" style:UIBarButtonItemStylePlain target:self action:@selector(didTapButton:)]; 60 | 61 | [self prepareInputAccessoryView]; 62 | } 63 | 64 | - (void)prepareInputAccessoryView 65 | { 66 | CHGInputAccessoryView *accessoryView = [CHGInputAccessoryView inputAccessoryView]; 67 | 68 | accessoryView.inputAccessoryViewDelegate = self; 69 | 70 | CHGInputAccessoryViewItem *trashItem = [CHGInputAccessoryViewItem buttonWithTitle:@"Trash"]; 71 | 72 | trashItem.actionOnTap = ^(CHGInputAccessoryViewItem *item){ 73 | NSLog(@"Tapped trashItem..."); 74 | }; 75 | 76 | CHGInputAccessoryViewItem *infoItem = [CHGInputAccessoryViewItem buttonWithImage:[UIImage imageNamed:@"ic_info"]]; 77 | infoItem.target = self; 78 | infoItem.action = @selector(didTapInfoItem:); 79 | 80 | _textFieldItem = [CHGInputAccessoryViewItemTextField item]; 81 | _textFieldItem.textField.delegate = self; 82 | 83 | accessoryView.items = @[ trashItem, 84 | [CHGInputAccessoryViewItem separatorWithColor:[UIColor lightGrayColor] height:20.f], 85 | [CHGInputAccessoryViewItem buttonWithImage:[UIImage imageNamed:@"ic_search"]], 86 | _textFieldItem ]; 87 | 88 | [accessoryView addItem:infoItem animated:NO]; 89 | 90 | CHGView *view = (CHGView *)self.view; 91 | view.inputAccessoryView = accessoryView; 92 | } 93 | 94 | - (void)didTapButton:(id)button 95 | { 96 | if ([button isKindOfClass:[UIBarButtonItem class]]) { 97 | [self performSegueWithIdentifier:@"dockedAccessoryView" sender:self]; 98 | 99 | return; 100 | } 101 | 102 | if (((UIButton *)button).tag == 98) { 103 | [_textFieldItem.textField resignFirstResponder]; 104 | [((CHGView *)self.view) resignFirstResponder]; 105 | 106 | CHGInputAccessoryView *accessoryView = (CHGInputAccessoryView *)self.view.inputAccessoryView; 107 | NSLog(accessoryView.isVisible ? @"Yes" : @"No"); 108 | 109 | return; 110 | } 111 | 112 | [((CHGView *)self.view) becomeFirstResponder]; 113 | 114 | if (((UIButton *)button).tag == 99) { 115 | [_textFieldItem.textField becomeFirstResponder]; 116 | } 117 | 118 | CHGInputAccessoryView *accessoryView = (CHGInputAccessoryView *)self.view.inputAccessoryView; 119 | NSLog(accessoryView.isVisible ? @"Yes" : @"No"); 120 | } 121 | 122 | - (void)didTapInfoItem:(CHGInputAccessoryViewItem *)item 123 | { 124 | NSLog(@"Tapped infoItem..."); 125 | 126 | CHGInputAccessoryView *accessoryView = (CHGInputAccessoryView *)self.view.inputAccessoryView; 127 | 128 | [accessoryView removeItem:item animated:YES]; 129 | } 130 | 131 | #pragma mark - CHGInputAccessoryViewDelegate 132 | 133 | - (void)didTapItem:(CHGInputAccessoryViewItem *)item 134 | { 135 | NSLog(@"Tapped item..."); 136 | } 137 | 138 | - (void)didTapItemAtIndex:(NSUInteger)index 139 | { 140 | NSLog(@"Tapped item at index %lu...", (unsigned long)index); 141 | } 142 | 143 | @end 144 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "83.5x83.5", 66 | "scale" : "2x" 67 | } 68 | ], 69 | "info" : { 70 | "version" : 1, 71 | "author" : "xcode" 72 | } 73 | } -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "ic_info.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "ic_info@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "ic_info@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/ic_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/ic_info.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/ic_info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/ic_info@2x.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/ic_info@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_info.imageset/ic_info@3x.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "ic_search.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "ic_search@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "ic_search@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/ic_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/ic_search.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/ic_search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/ic_search@2x.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/ic_search@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_search.imageset/ic_search@3x.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "ic_trash.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "ic_trash@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "ic_trash@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/ic_trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/ic_trash.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/ic_trash@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/ic_trash@2x.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/ic_trash@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Example/CHGInputAccessoryView/Images.xcassets/ic_trash.imageset/ic_trash@3x.png -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/CHGInputAccessoryView/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CHGInputAccessoryView 4 | // 5 | // Created by Christian on 01/04/2016. 6 | // Copyright (c) 2017 Christian. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "CHGAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([CHGAppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | platform :ios, '9.0' 3 | 4 | project 'CHGInputAccessoryView' 5 | use_frameworks! 6 | 7 | target 'CHGInputAccessoryView_Example' do 8 | pod "CHGInputAccessoryView", :path => "../" 9 | end 10 | 11 | target 'CHGInputAccessoryView_Tests' do 12 | pod "CHGInputAccessoryView", :path => "../" 13 | 14 | 15 | end 16 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CHGInputAccessoryView (1.1.1) 3 | 4 | DEPENDENCIES: 5 | - CHGInputAccessoryView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | CHGInputAccessoryView: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | CHGInputAccessoryView: c17cf77036775c9dbe3adaee40bab41766660e97 13 | 14 | PODFILE CHECKSUM: a8a1c14626e0508a8f626f05926ec4ac26a178d1 15 | 16 | COCOAPODS: 1.2.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/CHGInputAccessoryView.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CHGInputAccessoryView", 3 | "version": "1.1.1", 4 | "summary": "Simply build an inputAccessoryView to show above a keyboard.", 5 | "description": "This pod will help to build an inputAccessoryView as simple and fast as possible. The CHGInputAccessoryView is based on UIToolbar with all its advantages and has some prebuild items like a separator, a textfield, a TextView or flexible and fixed spaces.", 6 | "homepage": "https://github.com/grethi/CHGInputAccessoryView", 7 | "license": "MIT", 8 | "authors": { 9 | "Christian Greth": "greth.christian@googlemail.com" 10 | }, 11 | "source": { 12 | "git": "https://github.com/grethi/CHGInputAccessoryView.git", 13 | "tag": "1.1.1" 14 | }, 15 | "platforms": { 16 | "ios": "7.0" 17 | }, 18 | "requires_arc": true, 19 | "source_files": "Pod/Classes/**/*", 20 | "resource_bundles": { 21 | "CHGInputAccessoryView": [ 22 | "Pod/Assets/*.png" 23 | ] 24 | }, 25 | "frameworks": "UIKit" 26 | } 27 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CHGInputAccessoryView (1.1.1) 3 | 4 | DEPENDENCIES: 5 | - CHGInputAccessoryView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | CHGInputAccessoryView: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | CHGInputAccessoryView: c17cf77036775c9dbe3adaee40bab41766660e97 13 | 14 | PODFILE CHECKSUM: a8a1c14626e0508a8f626f05926ec4ac26a178d1 15 | 16 | COCOAPODS: 1.2.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0B072AE0DEBBEDEBA6A96EC21B71F30F /* Pods-CHGInputAccessoryView_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B714BB87DCA4DAFC29B713D06CDD8F8 /* Pods-CHGInputAccessoryView_Example-dummy.m */; }; 11 | 11E223BE4491DA4DEFA467DE16CD4355 /* CHGInputAccessoryViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FA8EA7A1D6D45365D374B41E0A43252 /* CHGInputAccessoryViewItem.m */; }; 12 | 1B6E67B8C8F90363EAA160FBA4F0A9EB /* CHGInputAccessoryViewItem.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2D0473990FA4F2047B1E407ACC47E9 /* CHGInputAccessoryViewItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 38F77F0CC16B4DD24C56FEDD83E8EDAB /* CHGInputAccessoryViewItemTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F5874A57CE1FD3D3E99FA60004FF710 /* CHGInputAccessoryViewItemTextField.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 3A6CBF07D518CADC2CB6696C405CD718 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; 15 | 4ACAFD6FF86C5AEB6E152163174632B9 /* Pods-CHGInputAccessoryView_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F4569E789B77DB06EE29326FD7C14617 /* Pods-CHGInputAccessoryView_Tests-dummy.m */; }; 16 | 4F3907874299EB9244D350148332BAE4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */; }; 17 | 5876E055C56C8115F4C706527C45CF6B /* CHGInputAccessoryViewItemTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 889AC23DE7EE9234089FCCBDBCD08F4F /* CHGInputAccessoryViewItemTextView.m */; }; 18 | 5D14913549B6F1864F701AD5E8AC0299 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; 19 | 7D0187C30103C7B6BB106B552DBEFD1F /* CHGInputAccessoryView.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 14A7A6AF9CF8966E1FBAF2A699D59F58 /* CHGInputAccessoryView.bundle */; }; 20 | 846930BA0C3B141E9DD81CB695D510EF /* Pods-CHGInputAccessoryView_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D690B99DF92920D0219115997F13D4CE /* Pods-CHGInputAccessoryView_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 21 | 873F7F0A1B33982085694B5A8377966F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; 22 | 88E7C61EA1766DDE8C4E5225A0C3847A /* CHGInputAccessoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = 247B2CA07368D90B38099F57D9ED2E6A /* CHGInputAccessoryView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 23 | 924A01FC64820234BE584B39656B854F /* Pods-CHGInputAccessoryView_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 54E26373D84F013DBCBCC8360DF7198D /* Pods-CHGInputAccessoryView_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24 | 96D5C1988693239EC8CAE08FAE73A3D5 /* CHGInputAccessoryViewItemSwitch.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A1DD90C537DE95A853ACFF252723A /* CHGInputAccessoryViewItemSwitch.h */; settings = {ATTRIBUTES = (Public, ); }; }; 25 | ABD1033CECFA2B02625F840A2BCA1F79 /* CHGInputAccessoryView.m in Sources */ = {isa = PBXBuildFile; fileRef = D1C84F7DFC7F2543FC84C669FD84BD3B /* CHGInputAccessoryView.m */; }; 26 | D06A62B8B5EA30A96F8C7A433C6087DD /* CHGInputAccessoryView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D64916B4FDA322331904250D17E5BAB /* CHGInputAccessoryView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27 | D1EE2803D230FFA4E791511EF63265E0 /* CHGInputAccessoryView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1365917C25A6EA54F777FFDD42B10DB4 /* CHGInputAccessoryView-dummy.m */; }; 28 | D6FFDAAE5974AF0151F31E56440C1306 /* CHGInputAccessoryViewItemTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 541DC3641A7B1C62A8437FBECCA00A69 /* CHGInputAccessoryViewItemTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 29 | E528EB5DB9B56CDF272B2E7A798053B4 /* CHGInputAccessoryViewItemSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 2449777BDB74930B8C64CBAC85EC7878 /* CHGInputAccessoryViewItemSwitch.m */; }; 30 | FF4160706C919CFDB57F5BAC7A6DEAAD /* CHGInputAccessoryViewItemTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EA36C1FC614111E5A2FA183083D257E /* CHGInputAccessoryViewItemTextField.m */; }; 31 | /* End PBXBuildFile section */ 32 | 33 | /* Begin PBXContainerItemProxy section */ 34 | 273A156342839E3FB9E048776F7AA0C0 /* PBXContainerItemProxy */ = { 35 | isa = PBXContainerItemProxy; 36 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 37 | proxyType = 1; 38 | remoteGlobalIDString = 7B5B4D1C0D73B777C3CEB9CD40A4D9D0; 39 | remoteInfo = CHGInputAccessoryView; 40 | }; 41 | 9BE41D469CAD4D9F9E3E1B845A04B54E /* PBXContainerItemProxy */ = { 42 | isa = PBXContainerItemProxy; 43 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 44 | proxyType = 1; 45 | remoteGlobalIDString = 87C27EDD19D02B17C2A104F2D89BC2C0; 46 | remoteInfo = "CHGInputAccessoryView-CHGInputAccessoryView"; 47 | }; 48 | B1BF456551124CA6C298A278596C5F20 /* PBXContainerItemProxy */ = { 49 | isa = PBXContainerItemProxy; 50 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 51 | proxyType = 1; 52 | remoteGlobalIDString = 7B5B4D1C0D73B777C3CEB9CD40A4D9D0; 53 | remoteInfo = CHGInputAccessoryView; 54 | }; 55 | /* End PBXContainerItemProxy section */ 56 | 57 | /* Begin PBXFileReference section */ 58 | 009E27B112FCFE62D4B7B1931EE67E3B /* Pods-CHGInputAccessoryView_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CHGInputAccessoryView_Example-acknowledgements.markdown"; sourceTree = ""; }; 59 | 13363A1DAAD24A434773240800D02C8C /* Pods-CHGInputAccessoryView_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-CHGInputAccessoryView_Example.modulemap"; sourceTree = ""; }; 60 | 1365917C25A6EA54F777FFDD42B10DB4 /* CHGInputAccessoryView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CHGInputAccessoryView-dummy.m"; sourceTree = ""; }; 61 | 14A7A6AF9CF8966E1FBAF2A699D59F58 /* CHGInputAccessoryView.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = CHGInputAccessoryView.bundle; path = CHGInputAccessoryView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 62 | 1D6CE80F7065EF607D431377A9B7A182 /* Pods-CHGInputAccessoryView_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CHGInputAccessoryView_Tests-frameworks.sh"; sourceTree = ""; }; 63 | 2449777BDB74930B8C64CBAC85EC7878 /* CHGInputAccessoryViewItemSwitch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CHGInputAccessoryViewItemSwitch.m; sourceTree = ""; }; 64 | 247B2CA07368D90B38099F57D9ED2E6A /* CHGInputAccessoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CHGInputAccessoryView.h; sourceTree = ""; }; 65 | 276B331E917F272F9F4B630A72EA8A7B /* Pods-CHGInputAccessoryView_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CHGInputAccessoryView_Tests-acknowledgements.markdown"; sourceTree = ""; }; 66 | 2BEAC985C16FAD94C6EDFBBCF57A3631 /* Pods-CHGInputAccessoryView_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CHGInputAccessoryView_Tests-acknowledgements.plist"; sourceTree = ""; }; 67 | 2D4B194D801F63FDB2188D7512283F61 /* Pods-CHGInputAccessoryView_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-CHGInputAccessoryView_Tests.modulemap"; sourceTree = ""; }; 68 | 2D64916B4FDA322331904250D17E5BAB /* CHGInputAccessoryView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CHGInputAccessoryView-umbrella.h"; sourceTree = ""; }; 69 | 3FA8EA7A1D6D45365D374B41E0A43252 /* CHGInputAccessoryViewItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CHGInputAccessoryViewItem.m; sourceTree = ""; }; 70 | 434C4CCAF3A1E1E12C5A473E2B0FE598 /* CHGInputAccessoryView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = CHGInputAccessoryView.modulemap; sourceTree = ""; }; 71 | 541DC3641A7B1C62A8437FBECCA00A69 /* CHGInputAccessoryViewItemTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CHGInputAccessoryViewItemTextView.h; sourceTree = ""; }; 72 | 54E26373D84F013DBCBCC8360DF7198D /* Pods-CHGInputAccessoryView_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CHGInputAccessoryView_Example-umbrella.h"; sourceTree = ""; }; 73 | 6B714BB87DCA4DAFC29B713D06CDD8F8 /* Pods-CHGInputAccessoryView_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CHGInputAccessoryView_Example-dummy.m"; sourceTree = ""; }; 74 | 748B11EFA02D3FEFDC26D0B2A448A712 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 75 | 76A0BD7111B497109F180E5B4282AEF2 /* Pods-CHGInputAccessoryView_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CHGInputAccessoryView_Tests.release.xcconfig"; sourceTree = ""; }; 76 | 7F5874A57CE1FD3D3E99FA60004FF710 /* CHGInputAccessoryViewItemTextField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CHGInputAccessoryViewItemTextField.h; sourceTree = ""; }; 77 | 8669DD2988A9EEBC268A28D6346AF2F6 /* Pods-CHGInputAccessoryView_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CHGInputAccessoryView_Tests-resources.sh"; sourceTree = ""; }; 78 | 889AC23DE7EE9234089FCCBDBCD08F4F /* CHGInputAccessoryViewItemTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CHGInputAccessoryViewItemTextView.m; sourceTree = ""; }; 79 | 8B9D8D8291E6EC5DB6FD46430ADD24DF /* Pods_CHGInputAccessoryView_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_CHGInputAccessoryView_Tests.framework; path = "Pods-CHGInputAccessoryView_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 80 | 8EA36C1FC614111E5A2FA183083D257E /* CHGInputAccessoryViewItemTextField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CHGInputAccessoryViewItemTextField.m; sourceTree = ""; }; 81 | 929C4A8D3229E3B9BD2669C214EFA698 /* CHGInputAccessoryView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CHGInputAccessoryView.framework; path = CHGInputAccessoryView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 82 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 83 | 9F794C44062D685D7D712B881AE8E992 /* Pods-CHGInputAccessoryView_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CHGInputAccessoryView_Example-resources.sh"; sourceTree = ""; }; 84 | 9FC5F8143F1B511D0C272C2E071D5022 /* Pods-CHGInputAccessoryView_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CHGInputAccessoryView_Example-frameworks.sh"; sourceTree = ""; }; 85 | A4DB9452A619D11B5BFA92AE73781AE5 /* Pods-CHGInputAccessoryView_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CHGInputAccessoryView_Tests.debug.xcconfig"; sourceTree = ""; }; 86 | AA2A1DD90C537DE95A853ACFF252723A /* CHGInputAccessoryViewItemSwitch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CHGInputAccessoryViewItemSwitch.h; sourceTree = ""; }; 87 | B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 88 | B7EBF4280071B800FD09C4B932F81936 /* Pods-CHGInputAccessoryView_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CHGInputAccessoryView_Example-acknowledgements.plist"; sourceTree = ""; }; 89 | B9682B7E395503599A512564CA2C30CE /* ResourceBundle-CHGInputAccessoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-CHGInputAccessoryView-Info.plist"; sourceTree = ""; }; 90 | C3D67A0B473FE474400E0C63913C98D8 /* Pods_CHGInputAccessoryView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_CHGInputAccessoryView_Example.framework; path = "Pods-CHGInputAccessoryView_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 91 | C6B096706DCDC233D7AE72F24396F4A6 /* Pods-CHGInputAccessoryView_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CHGInputAccessoryView_Example.release.xcconfig"; sourceTree = ""; }; 92 | C9F8B5ECE945D196ECAC1B68F19941D5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 93 | CAA7DE78663F4E1F1A8E9450A48EF5A4 /* CHGInputAccessoryView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CHGInputAccessoryView.xcconfig; sourceTree = ""; }; 94 | CBC3CC6A236F98AA5B88151580B1BF60 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 95 | D1C84F7DFC7F2543FC84C669FD84BD3B /* CHGInputAccessoryView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CHGInputAccessoryView.m; sourceTree = ""; }; 96 | D4668B2FF384BE164D5B7B7C95BA3214 /* Pods-CHGInputAccessoryView_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CHGInputAccessoryView_Example.debug.xcconfig"; sourceTree = ""; }; 97 | D690B99DF92920D0219115997F13D4CE /* Pods-CHGInputAccessoryView_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CHGInputAccessoryView_Tests-umbrella.h"; sourceTree = ""; }; 98 | D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 99 | DD2D0473990FA4F2047B1E407ACC47E9 /* CHGInputAccessoryViewItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CHGInputAccessoryViewItem.h; sourceTree = ""; }; 100 | DD620E1704AF033BD385B4D954252088 /* CHGInputAccessoryView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CHGInputAccessoryView-prefix.pch"; sourceTree = ""; }; 101 | F4569E789B77DB06EE29326FD7C14617 /* Pods-CHGInputAccessoryView_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CHGInputAccessoryView_Tests-dummy.m"; sourceTree = ""; }; 102 | /* End PBXFileReference section */ 103 | 104 | /* Begin PBXFrameworksBuildPhase section */ 105 | 0AC1BEED38D11D5B23F4F144C9CF768E /* Frameworks */ = { 106 | isa = PBXFrameworksBuildPhase; 107 | buildActionMask = 2147483647; 108 | files = ( 109 | 3A6CBF07D518CADC2CB6696C405CD718 /* Foundation.framework in Frameworks */, 110 | ); 111 | runOnlyForDeploymentPostprocessing = 0; 112 | }; 113 | 6C68BE099BCEB8AC1E62758A26EFD8CC /* Frameworks */ = { 114 | isa = PBXFrameworksBuildPhase; 115 | buildActionMask = 2147483647; 116 | files = ( 117 | ); 118 | runOnlyForDeploymentPostprocessing = 0; 119 | }; 120 | A0E0E2B9896FF76BF8DFD4C90EC74676 /* Frameworks */ = { 121 | isa = PBXFrameworksBuildPhase; 122 | buildActionMask = 2147483647; 123 | files = ( 124 | 5D14913549B6F1864F701AD5E8AC0299 /* Foundation.framework in Frameworks */, 125 | 4F3907874299EB9244D350148332BAE4 /* UIKit.framework in Frameworks */, 126 | ); 127 | runOnlyForDeploymentPostprocessing = 0; 128 | }; 129 | C9359244A7560AC03E95F7A8560CF2BD /* Frameworks */ = { 130 | isa = PBXFrameworksBuildPhase; 131 | buildActionMask = 2147483647; 132 | files = ( 133 | 873F7F0A1B33982085694B5A8377966F /* Foundation.framework in Frameworks */, 134 | ); 135 | runOnlyForDeploymentPostprocessing = 0; 136 | }; 137 | /* End PBXFrameworksBuildPhase section */ 138 | 139 | /* Begin PBXGroup section */ 140 | 15002BB49FAB90F0E213BB3D01B28820 /* Pods-CHGInputAccessoryView_Tests */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | C9F8B5ECE945D196ECAC1B68F19941D5 /* Info.plist */, 144 | 2D4B194D801F63FDB2188D7512283F61 /* Pods-CHGInputAccessoryView_Tests.modulemap */, 145 | 276B331E917F272F9F4B630A72EA8A7B /* Pods-CHGInputAccessoryView_Tests-acknowledgements.markdown */, 146 | 2BEAC985C16FAD94C6EDFBBCF57A3631 /* Pods-CHGInputAccessoryView_Tests-acknowledgements.plist */, 147 | F4569E789B77DB06EE29326FD7C14617 /* Pods-CHGInputAccessoryView_Tests-dummy.m */, 148 | 1D6CE80F7065EF607D431377A9B7A182 /* Pods-CHGInputAccessoryView_Tests-frameworks.sh */, 149 | 8669DD2988A9EEBC268A28D6346AF2F6 /* Pods-CHGInputAccessoryView_Tests-resources.sh */, 150 | D690B99DF92920D0219115997F13D4CE /* Pods-CHGInputAccessoryView_Tests-umbrella.h */, 151 | A4DB9452A619D11B5BFA92AE73781AE5 /* Pods-CHGInputAccessoryView_Tests.debug.xcconfig */, 152 | 76A0BD7111B497109F180E5B4282AEF2 /* Pods-CHGInputAccessoryView_Tests.release.xcconfig */, 153 | ); 154 | name = "Pods-CHGInputAccessoryView_Tests"; 155 | path = "Target Support Files/Pods-CHGInputAccessoryView_Tests"; 156 | sourceTree = ""; 157 | }; 158 | 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { 159 | isa = PBXGroup; 160 | children = ( 161 | 438B396F6B4147076630CAEFE34282C1 /* iOS */, 162 | ); 163 | name = Frameworks; 164 | sourceTree = ""; 165 | }; 166 | 438B396F6B4147076630CAEFE34282C1 /* iOS */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */, 170 | B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */, 171 | ); 172 | name = iOS; 173 | sourceTree = ""; 174 | }; 175 | 6D53DEFC9AA91FCCCBFEC0BE531E8325 /* Pods-CHGInputAccessoryView_Example */ = { 176 | isa = PBXGroup; 177 | children = ( 178 | CBC3CC6A236F98AA5B88151580B1BF60 /* Info.plist */, 179 | 13363A1DAAD24A434773240800D02C8C /* Pods-CHGInputAccessoryView_Example.modulemap */, 180 | 009E27B112FCFE62D4B7B1931EE67E3B /* Pods-CHGInputAccessoryView_Example-acknowledgements.markdown */, 181 | B7EBF4280071B800FD09C4B932F81936 /* Pods-CHGInputAccessoryView_Example-acknowledgements.plist */, 182 | 6B714BB87DCA4DAFC29B713D06CDD8F8 /* Pods-CHGInputAccessoryView_Example-dummy.m */, 183 | 9FC5F8143F1B511D0C272C2E071D5022 /* Pods-CHGInputAccessoryView_Example-frameworks.sh */, 184 | 9F794C44062D685D7D712B881AE8E992 /* Pods-CHGInputAccessoryView_Example-resources.sh */, 185 | 54E26373D84F013DBCBCC8360DF7198D /* Pods-CHGInputAccessoryView_Example-umbrella.h */, 186 | D4668B2FF384BE164D5B7B7C95BA3214 /* Pods-CHGInputAccessoryView_Example.debug.xcconfig */, 187 | C6B096706DCDC233D7AE72F24396F4A6 /* Pods-CHGInputAccessoryView_Example.release.xcconfig */, 188 | ); 189 | name = "Pods-CHGInputAccessoryView_Example"; 190 | path = "Target Support Files/Pods-CHGInputAccessoryView_Example"; 191 | sourceTree = ""; 192 | }; 193 | 7DB346D0F39D3F0E887471402A8071AB = { 194 | isa = PBXGroup; 195 | children = ( 196 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 197 | 8C8F66C995E92B8DD95D3F0268EE4114 /* Development Pods */, 198 | 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, 199 | A43340EE134C3985EBF6206AAABDA294 /* Products */, 200 | FD29CD86B52B576BAB46FC36E833A6A6 /* Targets Support Files */, 201 | ); 202 | sourceTree = ""; 203 | }; 204 | 84DA70C51776D5023FED71413C45C2E6 /* Classes */ = { 205 | isa = PBXGroup; 206 | children = ( 207 | 247B2CA07368D90B38099F57D9ED2E6A /* CHGInputAccessoryView.h */, 208 | D1C84F7DFC7F2543FC84C669FD84BD3B /* CHGInputAccessoryView.m */, 209 | DD2D0473990FA4F2047B1E407ACC47E9 /* CHGInputAccessoryViewItem.h */, 210 | 3FA8EA7A1D6D45365D374B41E0A43252 /* CHGInputAccessoryViewItem.m */, 211 | AA2A1DD90C537DE95A853ACFF252723A /* CHGInputAccessoryViewItemSwitch.h */, 212 | 2449777BDB74930B8C64CBAC85EC7878 /* CHGInputAccessoryViewItemSwitch.m */, 213 | 7F5874A57CE1FD3D3E99FA60004FF710 /* CHGInputAccessoryViewItemTextField.h */, 214 | 8EA36C1FC614111E5A2FA183083D257E /* CHGInputAccessoryViewItemTextField.m */, 215 | 541DC3641A7B1C62A8437FBECCA00A69 /* CHGInputAccessoryViewItemTextView.h */, 216 | 889AC23DE7EE9234089FCCBDBCD08F4F /* CHGInputAccessoryViewItemTextView.m */, 217 | ); 218 | name = Classes; 219 | path = Classes; 220 | sourceTree = ""; 221 | }; 222 | 8C8F66C995E92B8DD95D3F0268EE4114 /* Development Pods */ = { 223 | isa = PBXGroup; 224 | children = ( 225 | CB4C9D74A03B311ACF149CDDDF02C421 /* CHGInputAccessoryView */, 226 | ); 227 | name = "Development Pods"; 228 | sourceTree = ""; 229 | }; 230 | A43340EE134C3985EBF6206AAABDA294 /* Products */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | 14A7A6AF9CF8966E1FBAF2A699D59F58 /* CHGInputAccessoryView.bundle */, 234 | 929C4A8D3229E3B9BD2669C214EFA698 /* CHGInputAccessoryView.framework */, 235 | C3D67A0B473FE474400E0C63913C98D8 /* Pods_CHGInputAccessoryView_Example.framework */, 236 | 8B9D8D8291E6EC5DB6FD46430ADD24DF /* Pods_CHGInputAccessoryView_Tests.framework */, 237 | ); 238 | name = Products; 239 | sourceTree = ""; 240 | }; 241 | C01E5777653B24AE4E91F540B9BFD849 /* Pod */ = { 242 | isa = PBXGroup; 243 | children = ( 244 | 84DA70C51776D5023FED71413C45C2E6 /* Classes */, 245 | ); 246 | name = Pod; 247 | path = Pod; 248 | sourceTree = ""; 249 | }; 250 | CB4C9D74A03B311ACF149CDDDF02C421 /* CHGInputAccessoryView */ = { 251 | isa = PBXGroup; 252 | children = ( 253 | C01E5777653B24AE4E91F540B9BFD849 /* Pod */, 254 | CC2CA495DD72BD11103EDE6991A05E8D /* Support Files */, 255 | ); 256 | name = CHGInputAccessoryView; 257 | path = ../..; 258 | sourceTree = ""; 259 | }; 260 | CC2CA495DD72BD11103EDE6991A05E8D /* Support Files */ = { 261 | isa = PBXGroup; 262 | children = ( 263 | 434C4CCAF3A1E1E12C5A473E2B0FE598 /* CHGInputAccessoryView.modulemap */, 264 | CAA7DE78663F4E1F1A8E9450A48EF5A4 /* CHGInputAccessoryView.xcconfig */, 265 | 1365917C25A6EA54F777FFDD42B10DB4 /* CHGInputAccessoryView-dummy.m */, 266 | DD620E1704AF033BD385B4D954252088 /* CHGInputAccessoryView-prefix.pch */, 267 | 2D64916B4FDA322331904250D17E5BAB /* CHGInputAccessoryView-umbrella.h */, 268 | 748B11EFA02D3FEFDC26D0B2A448A712 /* Info.plist */, 269 | B9682B7E395503599A512564CA2C30CE /* ResourceBundle-CHGInputAccessoryView-Info.plist */, 270 | ); 271 | name = "Support Files"; 272 | path = "Example/Pods/Target Support Files/CHGInputAccessoryView"; 273 | sourceTree = ""; 274 | }; 275 | FD29CD86B52B576BAB46FC36E833A6A6 /* Targets Support Files */ = { 276 | isa = PBXGroup; 277 | children = ( 278 | 6D53DEFC9AA91FCCCBFEC0BE531E8325 /* Pods-CHGInputAccessoryView_Example */, 279 | 15002BB49FAB90F0E213BB3D01B28820 /* Pods-CHGInputAccessoryView_Tests */, 280 | ); 281 | name = "Targets Support Files"; 282 | sourceTree = ""; 283 | }; 284 | /* End PBXGroup section */ 285 | 286 | /* Begin PBXHeadersBuildPhase section */ 287 | 630B6133DBDCDE421ADFDD412559301B /* Headers */ = { 288 | isa = PBXHeadersBuildPhase; 289 | buildActionMask = 2147483647; 290 | files = ( 291 | 924A01FC64820234BE584B39656B854F /* Pods-CHGInputAccessoryView_Example-umbrella.h in Headers */, 292 | ); 293 | runOnlyForDeploymentPostprocessing = 0; 294 | }; 295 | C529942B992AB9486C8D71C0E5CB801A /* Headers */ = { 296 | isa = PBXHeadersBuildPhase; 297 | buildActionMask = 2147483647; 298 | files = ( 299 | 846930BA0C3B141E9DD81CB695D510EF /* Pods-CHGInputAccessoryView_Tests-umbrella.h in Headers */, 300 | ); 301 | runOnlyForDeploymentPostprocessing = 0; 302 | }; 303 | DCB10B77EA7288CA65F49D44750BED10 /* Headers */ = { 304 | isa = PBXHeadersBuildPhase; 305 | buildActionMask = 2147483647; 306 | files = ( 307 | D06A62B8B5EA30A96F8C7A433C6087DD /* CHGInputAccessoryView-umbrella.h in Headers */, 308 | 88E7C61EA1766DDE8C4E5225A0C3847A /* CHGInputAccessoryView.h in Headers */, 309 | 1B6E67B8C8F90363EAA160FBA4F0A9EB /* CHGInputAccessoryViewItem.h in Headers */, 310 | 96D5C1988693239EC8CAE08FAE73A3D5 /* CHGInputAccessoryViewItemSwitch.h in Headers */, 311 | 38F77F0CC16B4DD24C56FEDD83E8EDAB /* CHGInputAccessoryViewItemTextField.h in Headers */, 312 | D6FFDAAE5974AF0151F31E56440C1306 /* CHGInputAccessoryViewItemTextView.h in Headers */, 313 | ); 314 | runOnlyForDeploymentPostprocessing = 0; 315 | }; 316 | /* End PBXHeadersBuildPhase section */ 317 | 318 | /* Begin PBXNativeTarget section */ 319 | 1AFDDA2C45AE2349E057917A32FCDE78 /* Pods-CHGInputAccessoryView_Example */ = { 320 | isa = PBXNativeTarget; 321 | buildConfigurationList = F0A641EA18BFED3EE31CAB3E9E8BDA5F /* Build configuration list for PBXNativeTarget "Pods-CHGInputAccessoryView_Example" */; 322 | buildPhases = ( 323 | C0E8F16086C797A49BDC08EE52A8067B /* Sources */, 324 | 0AC1BEED38D11D5B23F4F144C9CF768E /* Frameworks */, 325 | 630B6133DBDCDE421ADFDD412559301B /* Headers */, 326 | ); 327 | buildRules = ( 328 | ); 329 | dependencies = ( 330 | 16EFE15EF45C79C7B87424A68499A154 /* PBXTargetDependency */, 331 | ); 332 | name = "Pods-CHGInputAccessoryView_Example"; 333 | productName = "Pods-CHGInputAccessoryView_Example"; 334 | productReference = C3D67A0B473FE474400E0C63913C98D8 /* Pods_CHGInputAccessoryView_Example.framework */; 335 | productType = "com.apple.product-type.framework"; 336 | }; 337 | 341EAFAF55ED25508936DF5F904942CC /* Pods-CHGInputAccessoryView_Tests */ = { 338 | isa = PBXNativeTarget; 339 | buildConfigurationList = E025CA505D74A03C6524EDB7EF9E8D6C /* Build configuration list for PBXNativeTarget "Pods-CHGInputAccessoryView_Tests" */; 340 | buildPhases = ( 341 | B6759646A8B0D88929E72A41D61604D2 /* Sources */, 342 | C9359244A7560AC03E95F7A8560CF2BD /* Frameworks */, 343 | C529942B992AB9486C8D71C0E5CB801A /* Headers */, 344 | ); 345 | buildRules = ( 346 | ); 347 | dependencies = ( 348 | 025EE590504352ACBEF3AC31E746B8C3 /* PBXTargetDependency */, 349 | ); 350 | name = "Pods-CHGInputAccessoryView_Tests"; 351 | productName = "Pods-CHGInputAccessoryView_Tests"; 352 | productReference = 8B9D8D8291E6EC5DB6FD46430ADD24DF /* Pods_CHGInputAccessoryView_Tests.framework */; 353 | productType = "com.apple.product-type.framework"; 354 | }; 355 | 7B5B4D1C0D73B777C3CEB9CD40A4D9D0 /* CHGInputAccessoryView */ = { 356 | isa = PBXNativeTarget; 357 | buildConfigurationList = 5A735150EC3B3D17AD14D809154C05E6 /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView" */; 358 | buildPhases = ( 359 | 45BCAE851399DB6F6A54741FB455F851 /* Sources */, 360 | A0E0E2B9896FF76BF8DFD4C90EC74676 /* Frameworks */, 361 | 818F2F937F82BE7FB2223388EE1856DB /* Resources */, 362 | DCB10B77EA7288CA65F49D44750BED10 /* Headers */, 363 | ); 364 | buildRules = ( 365 | ); 366 | dependencies = ( 367 | 17B23BFE4CB4C511E8F14DDA0E108556 /* PBXTargetDependency */, 368 | ); 369 | name = CHGInputAccessoryView; 370 | productName = CHGInputAccessoryView; 371 | productReference = 929C4A8D3229E3B9BD2669C214EFA698 /* CHGInputAccessoryView.framework */; 372 | productType = "com.apple.product-type.framework"; 373 | }; 374 | 87C27EDD19D02B17C2A104F2D89BC2C0 /* CHGInputAccessoryView-CHGInputAccessoryView */ = { 375 | isa = PBXNativeTarget; 376 | buildConfigurationList = 4D492B2EE41EA00B6E2479ABAD0FBDD9 /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView-CHGInputAccessoryView" */; 377 | buildPhases = ( 378 | AEDDEC197CC650383F2587FEBE3F5DE2 /* Sources */, 379 | 6C68BE099BCEB8AC1E62758A26EFD8CC /* Frameworks */, 380 | 92BCB70F6F2E2F7A2D5DE784D687ED50 /* Resources */, 381 | ); 382 | buildRules = ( 383 | ); 384 | dependencies = ( 385 | ); 386 | name = "CHGInputAccessoryView-CHGInputAccessoryView"; 387 | productName = "CHGInputAccessoryView-CHGInputAccessoryView"; 388 | productReference = 14A7A6AF9CF8966E1FBAF2A699D59F58 /* CHGInputAccessoryView.bundle */; 389 | productType = "com.apple.product-type.bundle"; 390 | }; 391 | /* End PBXNativeTarget section */ 392 | 393 | /* Begin PBXProject section */ 394 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 395 | isa = PBXProject; 396 | attributes = { 397 | LastSwiftUpdateCheck = 0830; 398 | LastUpgradeCheck = 0700; 399 | }; 400 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 401 | compatibilityVersion = "Xcode 3.2"; 402 | developmentRegion = English; 403 | hasScannedForEncodings = 0; 404 | knownRegions = ( 405 | en, 406 | ); 407 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 408 | productRefGroup = A43340EE134C3985EBF6206AAABDA294 /* Products */; 409 | projectDirPath = ""; 410 | projectRoot = ""; 411 | targets = ( 412 | 7B5B4D1C0D73B777C3CEB9CD40A4D9D0 /* CHGInputAccessoryView */, 413 | 87C27EDD19D02B17C2A104F2D89BC2C0 /* CHGInputAccessoryView-CHGInputAccessoryView */, 414 | 1AFDDA2C45AE2349E057917A32FCDE78 /* Pods-CHGInputAccessoryView_Example */, 415 | 341EAFAF55ED25508936DF5F904942CC /* Pods-CHGInputAccessoryView_Tests */, 416 | ); 417 | }; 418 | /* End PBXProject section */ 419 | 420 | /* Begin PBXResourcesBuildPhase section */ 421 | 818F2F937F82BE7FB2223388EE1856DB /* Resources */ = { 422 | isa = PBXResourcesBuildPhase; 423 | buildActionMask = 2147483647; 424 | files = ( 425 | 7D0187C30103C7B6BB106B552DBEFD1F /* CHGInputAccessoryView.bundle in Resources */, 426 | ); 427 | runOnlyForDeploymentPostprocessing = 0; 428 | }; 429 | 92BCB70F6F2E2F7A2D5DE784D687ED50 /* Resources */ = { 430 | isa = PBXResourcesBuildPhase; 431 | buildActionMask = 2147483647; 432 | files = ( 433 | ); 434 | runOnlyForDeploymentPostprocessing = 0; 435 | }; 436 | /* End PBXResourcesBuildPhase section */ 437 | 438 | /* Begin PBXSourcesBuildPhase section */ 439 | 45BCAE851399DB6F6A54741FB455F851 /* Sources */ = { 440 | isa = PBXSourcesBuildPhase; 441 | buildActionMask = 2147483647; 442 | files = ( 443 | D1EE2803D230FFA4E791511EF63265E0 /* CHGInputAccessoryView-dummy.m in Sources */, 444 | ABD1033CECFA2B02625F840A2BCA1F79 /* CHGInputAccessoryView.m in Sources */, 445 | 11E223BE4491DA4DEFA467DE16CD4355 /* CHGInputAccessoryViewItem.m in Sources */, 446 | E528EB5DB9B56CDF272B2E7A798053B4 /* CHGInputAccessoryViewItemSwitch.m in Sources */, 447 | FF4160706C919CFDB57F5BAC7A6DEAAD /* CHGInputAccessoryViewItemTextField.m in Sources */, 448 | 5876E055C56C8115F4C706527C45CF6B /* CHGInputAccessoryViewItemTextView.m in Sources */, 449 | ); 450 | runOnlyForDeploymentPostprocessing = 0; 451 | }; 452 | AEDDEC197CC650383F2587FEBE3F5DE2 /* Sources */ = { 453 | isa = PBXSourcesBuildPhase; 454 | buildActionMask = 2147483647; 455 | files = ( 456 | ); 457 | runOnlyForDeploymentPostprocessing = 0; 458 | }; 459 | B6759646A8B0D88929E72A41D61604D2 /* Sources */ = { 460 | isa = PBXSourcesBuildPhase; 461 | buildActionMask = 2147483647; 462 | files = ( 463 | 4ACAFD6FF86C5AEB6E152163174632B9 /* Pods-CHGInputAccessoryView_Tests-dummy.m in Sources */, 464 | ); 465 | runOnlyForDeploymentPostprocessing = 0; 466 | }; 467 | C0E8F16086C797A49BDC08EE52A8067B /* Sources */ = { 468 | isa = PBXSourcesBuildPhase; 469 | buildActionMask = 2147483647; 470 | files = ( 471 | 0B072AE0DEBBEDEBA6A96EC21B71F30F /* Pods-CHGInputAccessoryView_Example-dummy.m in Sources */, 472 | ); 473 | runOnlyForDeploymentPostprocessing = 0; 474 | }; 475 | /* End PBXSourcesBuildPhase section */ 476 | 477 | /* Begin PBXTargetDependency section */ 478 | 025EE590504352ACBEF3AC31E746B8C3 /* PBXTargetDependency */ = { 479 | isa = PBXTargetDependency; 480 | name = CHGInputAccessoryView; 481 | target = 7B5B4D1C0D73B777C3CEB9CD40A4D9D0 /* CHGInputAccessoryView */; 482 | targetProxy = 273A156342839E3FB9E048776F7AA0C0 /* PBXContainerItemProxy */; 483 | }; 484 | 16EFE15EF45C79C7B87424A68499A154 /* PBXTargetDependency */ = { 485 | isa = PBXTargetDependency; 486 | name = CHGInputAccessoryView; 487 | target = 7B5B4D1C0D73B777C3CEB9CD40A4D9D0 /* CHGInputAccessoryView */; 488 | targetProxy = B1BF456551124CA6C298A278596C5F20 /* PBXContainerItemProxy */; 489 | }; 490 | 17B23BFE4CB4C511E8F14DDA0E108556 /* PBXTargetDependency */ = { 491 | isa = PBXTargetDependency; 492 | name = "CHGInputAccessoryView-CHGInputAccessoryView"; 493 | target = 87C27EDD19D02B17C2A104F2D89BC2C0 /* CHGInputAccessoryView-CHGInputAccessoryView */; 494 | targetProxy = 9BE41D469CAD4D9F9E3E1B845A04B54E /* PBXContainerItemProxy */; 495 | }; 496 | /* End PBXTargetDependency section */ 497 | 498 | /* Begin XCBuildConfiguration section */ 499 | 360EB65C74BED3CEA1730786DD583073 /* Debug */ = { 500 | isa = XCBuildConfiguration; 501 | baseConfigurationReference = CAA7DE78663F4E1F1A8E9450A48EF5A4 /* CHGInputAccessoryView.xcconfig */; 502 | buildSettings = { 503 | CODE_SIGN_IDENTITY = ""; 504 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 505 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 506 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 507 | CURRENT_PROJECT_VERSION = 1; 508 | DEBUG_INFORMATION_FORMAT = dwarf; 509 | DEFINES_MODULE = YES; 510 | DYLIB_COMPATIBILITY_VERSION = 1; 511 | DYLIB_CURRENT_VERSION = 1; 512 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 513 | ENABLE_STRICT_OBJC_MSGSEND = YES; 514 | GCC_NO_COMMON_BLOCKS = YES; 515 | GCC_PREFIX_HEADER = "Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView-prefix.pch"; 516 | INFOPLIST_FILE = "Target Support Files/CHGInputAccessoryView/Info.plist"; 517 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 518 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 519 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 520 | MODULEMAP_FILE = "Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView.modulemap"; 521 | MTL_ENABLE_DEBUG_INFO = YES; 522 | PRODUCT_NAME = CHGInputAccessoryView; 523 | SDKROOT = iphoneos; 524 | SKIP_INSTALL = YES; 525 | TARGETED_DEVICE_FAMILY = "1,2"; 526 | VERSIONING_SYSTEM = "apple-generic"; 527 | VERSION_INFO_PREFIX = ""; 528 | }; 529 | name = Debug; 530 | }; 531 | 40342DFBD8B2526714C0E4425E1E519C /* Release */ = { 532 | isa = XCBuildConfiguration; 533 | baseConfigurationReference = C6B096706DCDC233D7AE72F24396F4A6 /* Pods-CHGInputAccessoryView_Example.release.xcconfig */; 534 | buildSettings = { 535 | CODE_SIGN_IDENTITY = ""; 536 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 537 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 538 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 539 | CURRENT_PROJECT_VERSION = 1; 540 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 541 | DEFINES_MODULE = YES; 542 | DYLIB_COMPATIBILITY_VERSION = 1; 543 | DYLIB_CURRENT_VERSION = 1; 544 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 545 | ENABLE_STRICT_OBJC_MSGSEND = YES; 546 | GCC_NO_COMMON_BLOCKS = YES; 547 | INFOPLIST_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Example/Info.plist"; 548 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 549 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 550 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 551 | MACH_O_TYPE = staticlib; 552 | MODULEMAP_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.modulemap"; 553 | MTL_ENABLE_DEBUG_INFO = NO; 554 | OTHER_LDFLAGS = ""; 555 | OTHER_LIBTOOLFLAGS = ""; 556 | PODS_ROOT = "$(SRCROOT)"; 557 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 558 | PRODUCT_NAME = Pods_CHGInputAccessoryView_Example; 559 | SDKROOT = iphoneos; 560 | SKIP_INSTALL = YES; 561 | TARGETED_DEVICE_FAMILY = "1,2"; 562 | VERSIONING_SYSTEM = "apple-generic"; 563 | VERSION_INFO_PREFIX = ""; 564 | }; 565 | name = Release; 566 | }; 567 | 49B4AC7EF6011D526EB0D8FE68A711D0 /* Debug */ = { 568 | isa = XCBuildConfiguration; 569 | baseConfigurationReference = D4668B2FF384BE164D5B7B7C95BA3214 /* Pods-CHGInputAccessoryView_Example.debug.xcconfig */; 570 | buildSettings = { 571 | CODE_SIGN_IDENTITY = ""; 572 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 573 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 574 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 575 | CURRENT_PROJECT_VERSION = 1; 576 | DEBUG_INFORMATION_FORMAT = dwarf; 577 | DEFINES_MODULE = YES; 578 | DYLIB_COMPATIBILITY_VERSION = 1; 579 | DYLIB_CURRENT_VERSION = 1; 580 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 581 | ENABLE_STRICT_OBJC_MSGSEND = YES; 582 | GCC_NO_COMMON_BLOCKS = YES; 583 | INFOPLIST_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Example/Info.plist"; 584 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 585 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 586 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 587 | MACH_O_TYPE = staticlib; 588 | MODULEMAP_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.modulemap"; 589 | MTL_ENABLE_DEBUG_INFO = YES; 590 | OTHER_LDFLAGS = ""; 591 | OTHER_LIBTOOLFLAGS = ""; 592 | PODS_ROOT = "$(SRCROOT)"; 593 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 594 | PRODUCT_NAME = Pods_CHGInputAccessoryView_Example; 595 | SDKROOT = iphoneos; 596 | SKIP_INSTALL = YES; 597 | TARGETED_DEVICE_FAMILY = "1,2"; 598 | VERSIONING_SYSTEM = "apple-generic"; 599 | VERSION_INFO_PREFIX = ""; 600 | }; 601 | name = Debug; 602 | }; 603 | 4E487F173E6C9664F4E9E26B9635D23C /* Debug */ = { 604 | isa = XCBuildConfiguration; 605 | buildSettings = { 606 | ALWAYS_SEARCH_USER_PATHS = NO; 607 | CLANG_ANALYZER_NONNULL = YES; 608 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; 609 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 610 | CLANG_CXX_LIBRARY = "libc++"; 611 | CLANG_ENABLE_MODULES = YES; 612 | CLANG_ENABLE_OBJC_ARC = YES; 613 | CLANG_WARN_BOOL_CONVERSION = YES; 614 | CLANG_WARN_CONSTANT_CONVERSION = YES; 615 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 616 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 617 | CLANG_WARN_EMPTY_BODY = YES; 618 | CLANG_WARN_ENUM_CONVERSION = YES; 619 | CLANG_WARN_INFINITE_RECURSION = YES; 620 | CLANG_WARN_INT_CONVERSION = YES; 621 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 622 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 623 | CLANG_WARN_UNREACHABLE_CODE = YES; 624 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 625 | CODE_SIGNING_REQUIRED = NO; 626 | COPY_PHASE_STRIP = NO; 627 | ENABLE_TESTABILITY = YES; 628 | GCC_C_LANGUAGE_STANDARD = gnu99; 629 | GCC_DYNAMIC_NO_PIC = NO; 630 | GCC_OPTIMIZATION_LEVEL = 0; 631 | GCC_PREPROCESSOR_DEFINITIONS = ( 632 | "POD_CONFIGURATION_DEBUG=1", 633 | "DEBUG=1", 634 | "$(inherited)", 635 | ); 636 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 637 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 638 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 639 | GCC_WARN_UNDECLARED_SELECTOR = YES; 640 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 641 | GCC_WARN_UNUSED_FUNCTION = YES; 642 | GCC_WARN_UNUSED_VARIABLE = YES; 643 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 644 | ONLY_ACTIVE_ARCH = YES; 645 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 646 | STRIP_INSTALLED_PRODUCT = NO; 647 | SYMROOT = "${SRCROOT}/../build"; 648 | }; 649 | name = Debug; 650 | }; 651 | 6C9D52249C383C0069812DFF47F65D6A /* Release */ = { 652 | isa = XCBuildConfiguration; 653 | baseConfigurationReference = CAA7DE78663F4E1F1A8E9450A48EF5A4 /* CHGInputAccessoryView.xcconfig */; 654 | buildSettings = { 655 | CODE_SIGN_IDENTITY = ""; 656 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 657 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 658 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 659 | CURRENT_PROJECT_VERSION = 1; 660 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 661 | DEFINES_MODULE = YES; 662 | DYLIB_COMPATIBILITY_VERSION = 1; 663 | DYLIB_CURRENT_VERSION = 1; 664 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 665 | ENABLE_STRICT_OBJC_MSGSEND = YES; 666 | GCC_NO_COMMON_BLOCKS = YES; 667 | GCC_PREFIX_HEADER = "Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView-prefix.pch"; 668 | INFOPLIST_FILE = "Target Support Files/CHGInputAccessoryView/Info.plist"; 669 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 670 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 671 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 672 | MODULEMAP_FILE = "Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView.modulemap"; 673 | MTL_ENABLE_DEBUG_INFO = NO; 674 | PRODUCT_NAME = CHGInputAccessoryView; 675 | SDKROOT = iphoneos; 676 | SKIP_INSTALL = YES; 677 | TARGETED_DEVICE_FAMILY = "1,2"; 678 | VERSIONING_SYSTEM = "apple-generic"; 679 | VERSION_INFO_PREFIX = ""; 680 | }; 681 | name = Release; 682 | }; 683 | 6CB9A5D373EE33AFF53FC4AD8C1F4F7B /* Debug */ = { 684 | isa = XCBuildConfiguration; 685 | baseConfigurationReference = A4DB9452A619D11B5BFA92AE73781AE5 /* Pods-CHGInputAccessoryView_Tests.debug.xcconfig */; 686 | buildSettings = { 687 | CODE_SIGN_IDENTITY = ""; 688 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 689 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 690 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 691 | CURRENT_PROJECT_VERSION = 1; 692 | DEBUG_INFORMATION_FORMAT = dwarf; 693 | DEFINES_MODULE = YES; 694 | DYLIB_COMPATIBILITY_VERSION = 1; 695 | DYLIB_CURRENT_VERSION = 1; 696 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 697 | ENABLE_STRICT_OBJC_MSGSEND = YES; 698 | GCC_NO_COMMON_BLOCKS = YES; 699 | INFOPLIST_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Tests/Info.plist"; 700 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 701 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 702 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 703 | MACH_O_TYPE = staticlib; 704 | MODULEMAP_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.modulemap"; 705 | MTL_ENABLE_DEBUG_INFO = YES; 706 | OTHER_LDFLAGS = ""; 707 | OTHER_LIBTOOLFLAGS = ""; 708 | PODS_ROOT = "$(SRCROOT)"; 709 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 710 | PRODUCT_NAME = Pods_CHGInputAccessoryView_Tests; 711 | SDKROOT = iphoneos; 712 | SKIP_INSTALL = YES; 713 | TARGETED_DEVICE_FAMILY = "1,2"; 714 | VERSIONING_SYSTEM = "apple-generic"; 715 | VERSION_INFO_PREFIX = ""; 716 | }; 717 | name = Debug; 718 | }; 719 | 7098C377971713E6BA0786959A7CF991 /* Debug */ = { 720 | isa = XCBuildConfiguration; 721 | baseConfigurationReference = CAA7DE78663F4E1F1A8E9450A48EF5A4 /* CHGInputAccessoryView.xcconfig */; 722 | buildSettings = { 723 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CHGInputAccessoryView"; 724 | ENABLE_STRICT_OBJC_MSGSEND = YES; 725 | GCC_NO_COMMON_BLOCKS = YES; 726 | INFOPLIST_FILE = "Target Support Files/CHGInputAccessoryView/ResourceBundle-CHGInputAccessoryView-Info.plist"; 727 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 728 | PRODUCT_NAME = CHGInputAccessoryView; 729 | SDKROOT = iphoneos; 730 | SKIP_INSTALL = YES; 731 | TARGETED_DEVICE_FAMILY = "1,2"; 732 | WRAPPER_EXTENSION = bundle; 733 | }; 734 | name = Debug; 735 | }; 736 | BDD0139D6EB93FA375F887ABD62DAB2E /* Release */ = { 737 | isa = XCBuildConfiguration; 738 | buildSettings = { 739 | ALWAYS_SEARCH_USER_PATHS = NO; 740 | CLANG_ANALYZER_NONNULL = YES; 741 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; 742 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 743 | CLANG_CXX_LIBRARY = "libc++"; 744 | CLANG_ENABLE_MODULES = YES; 745 | CLANG_ENABLE_OBJC_ARC = YES; 746 | CLANG_WARN_BOOL_CONVERSION = YES; 747 | CLANG_WARN_CONSTANT_CONVERSION = YES; 748 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 749 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 750 | CLANG_WARN_EMPTY_BODY = YES; 751 | CLANG_WARN_ENUM_CONVERSION = YES; 752 | CLANG_WARN_INFINITE_RECURSION = YES; 753 | CLANG_WARN_INT_CONVERSION = YES; 754 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 755 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 756 | CLANG_WARN_UNREACHABLE_CODE = YES; 757 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 758 | CODE_SIGNING_REQUIRED = NO; 759 | COPY_PHASE_STRIP = YES; 760 | ENABLE_NS_ASSERTIONS = NO; 761 | GCC_C_LANGUAGE_STANDARD = gnu99; 762 | GCC_PREPROCESSOR_DEFINITIONS = ( 763 | "POD_CONFIGURATION_RELEASE=1", 764 | "$(inherited)", 765 | ); 766 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 767 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 768 | GCC_WARN_UNDECLARED_SELECTOR = YES; 769 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 770 | GCC_WARN_UNUSED_FUNCTION = YES; 771 | GCC_WARN_UNUSED_VARIABLE = YES; 772 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 773 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 774 | STRIP_INSTALLED_PRODUCT = NO; 775 | SYMROOT = "${SRCROOT}/../build"; 776 | VALIDATE_PRODUCT = YES; 777 | }; 778 | name = Release; 779 | }; 780 | EC084618FAEDF3B37507D5F0F73FA9EC /* Release */ = { 781 | isa = XCBuildConfiguration; 782 | baseConfigurationReference = 76A0BD7111B497109F180E5B4282AEF2 /* Pods-CHGInputAccessoryView_Tests.release.xcconfig */; 783 | buildSettings = { 784 | CODE_SIGN_IDENTITY = ""; 785 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 786 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 787 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 788 | CURRENT_PROJECT_VERSION = 1; 789 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 790 | DEFINES_MODULE = YES; 791 | DYLIB_COMPATIBILITY_VERSION = 1; 792 | DYLIB_CURRENT_VERSION = 1; 793 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 794 | ENABLE_STRICT_OBJC_MSGSEND = YES; 795 | GCC_NO_COMMON_BLOCKS = YES; 796 | INFOPLIST_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Tests/Info.plist"; 797 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 798 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 799 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 800 | MACH_O_TYPE = staticlib; 801 | MODULEMAP_FILE = "Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.modulemap"; 802 | MTL_ENABLE_DEBUG_INFO = NO; 803 | OTHER_LDFLAGS = ""; 804 | OTHER_LIBTOOLFLAGS = ""; 805 | PODS_ROOT = "$(SRCROOT)"; 806 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 807 | PRODUCT_NAME = Pods_CHGInputAccessoryView_Tests; 808 | SDKROOT = iphoneos; 809 | SKIP_INSTALL = YES; 810 | TARGETED_DEVICE_FAMILY = "1,2"; 811 | VERSIONING_SYSTEM = "apple-generic"; 812 | VERSION_INFO_PREFIX = ""; 813 | }; 814 | name = Release; 815 | }; 816 | F10ECF00F800E9632FABDD988ED30028 /* Release */ = { 817 | isa = XCBuildConfiguration; 818 | baseConfigurationReference = CAA7DE78663F4E1F1A8E9450A48EF5A4 /* CHGInputAccessoryView.xcconfig */; 819 | buildSettings = { 820 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CHGInputAccessoryView"; 821 | ENABLE_STRICT_OBJC_MSGSEND = YES; 822 | GCC_NO_COMMON_BLOCKS = YES; 823 | INFOPLIST_FILE = "Target Support Files/CHGInputAccessoryView/ResourceBundle-CHGInputAccessoryView-Info.plist"; 824 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 825 | PRODUCT_NAME = CHGInputAccessoryView; 826 | SDKROOT = iphoneos; 827 | SKIP_INSTALL = YES; 828 | TARGETED_DEVICE_FAMILY = "1,2"; 829 | WRAPPER_EXTENSION = bundle; 830 | }; 831 | name = Release; 832 | }; 833 | /* End XCBuildConfiguration section */ 834 | 835 | /* Begin XCConfigurationList section */ 836 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 837 | isa = XCConfigurationList; 838 | buildConfigurations = ( 839 | 4E487F173E6C9664F4E9E26B9635D23C /* Debug */, 840 | BDD0139D6EB93FA375F887ABD62DAB2E /* Release */, 841 | ); 842 | defaultConfigurationIsVisible = 0; 843 | defaultConfigurationName = Release; 844 | }; 845 | 4D492B2EE41EA00B6E2479ABAD0FBDD9 /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView-CHGInputAccessoryView" */ = { 846 | isa = XCConfigurationList; 847 | buildConfigurations = ( 848 | 7098C377971713E6BA0786959A7CF991 /* Debug */, 849 | F10ECF00F800E9632FABDD988ED30028 /* Release */, 850 | ); 851 | defaultConfigurationIsVisible = 0; 852 | defaultConfigurationName = Release; 853 | }; 854 | 5A735150EC3B3D17AD14D809154C05E6 /* Build configuration list for PBXNativeTarget "CHGInputAccessoryView" */ = { 855 | isa = XCConfigurationList; 856 | buildConfigurations = ( 857 | 360EB65C74BED3CEA1730786DD583073 /* Debug */, 858 | 6C9D52249C383C0069812DFF47F65D6A /* Release */, 859 | ); 860 | defaultConfigurationIsVisible = 0; 861 | defaultConfigurationName = Release; 862 | }; 863 | E025CA505D74A03C6524EDB7EF9E8D6C /* Build configuration list for PBXNativeTarget "Pods-CHGInputAccessoryView_Tests" */ = { 864 | isa = XCConfigurationList; 865 | buildConfigurations = ( 866 | 6CB9A5D373EE33AFF53FC4AD8C1F4F7B /* Debug */, 867 | EC084618FAEDF3B37507D5F0F73FA9EC /* Release */, 868 | ); 869 | defaultConfigurationIsVisible = 0; 870 | defaultConfigurationName = Release; 871 | }; 872 | F0A641EA18BFED3EE31CAB3E9E8BDA5F /* Build configuration list for PBXNativeTarget "Pods-CHGInputAccessoryView_Example" */ = { 873 | isa = XCConfigurationList; 874 | buildConfigurations = ( 875 | 49B4AC7EF6011D526EB0D8FE68A711D0 /* Debug */, 876 | 40342DFBD8B2526714C0E4425E1E519C /* Release */, 877 | ); 878 | defaultConfigurationIsVisible = 0; 879 | defaultConfigurationName = Release; 880 | }; 881 | /* End XCConfigurationList section */ 882 | }; 883 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 884 | } 885 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_CHGInputAccessoryView : NSObject 3 | @end 4 | @implementation PodsDummy_CHGInputAccessoryView 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "CHGInputAccessoryView.h" 14 | #import "CHGInputAccessoryViewItem.h" 15 | #import "CHGInputAccessoryViewItemSwitch.h" 16 | #import "CHGInputAccessoryViewItemTextField.h" 17 | #import "CHGInputAccessoryViewItemTextView.h" 18 | 19 | FOUNDATION_EXPORT double CHGInputAccessoryViewVersionNumber; 20 | FOUNDATION_EXPORT const unsigned char CHGInputAccessoryViewVersionString[]; 21 | 22 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView.modulemap: -------------------------------------------------------------------------------- 1 | framework module CHGInputAccessoryView { 2 | umbrella header "CHGInputAccessoryView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/CHGInputAccessoryView.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CHGInputAccessoryView/ResourceBundle-CHGInputAccessoryView-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.1.1 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## CHGInputAccessoryView 5 | 6 | Copyright (c) 2017 Christian Greth 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2017 Christian Greth <greth.christian@googlemail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | CHGInputAccessoryView 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CHGInputAccessoryView_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CHGInputAccessoryView_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" 63 | 64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 65 | code_sign_cmd="$code_sign_cmd &" 66 | fi 67 | echo "$code_sign_cmd" 68 | eval "$code_sign_cmd" 69 | fi 70 | } 71 | 72 | # Strip invalid architectures 73 | strip_invalid_archs() { 74 | binary="$1" 75 | # Get architectures for current file 76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 77 | stripped="" 78 | for arch in $archs; do 79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 80 | # Strip non-valid architectures in-place 81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 82 | stripped="$stripped $arch" 83 | fi 84 | done 85 | if [[ "$stripped" ]]; then 86 | echo "Stripped $binary of architectures:$stripped" 87 | fi 88 | } 89 | 90 | 91 | if [[ "$CONFIGURATION" == "Debug" ]]; then 92 | install_framework "$BUILT_PRODUCTS_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework" 93 | fi 94 | if [[ "$CONFIGURATION" == "Release" ]]; then 95 | install_framework "$BUILT_PRODUCTS_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework" 96 | fi 97 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 98 | wait 99 | fi 100 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | 3) 22 | TARGET_DEVICE_ARGS="--target-device tv" 23 | ;; 24 | 4) 25 | TARGET_DEVICE_ARGS="--target-device watch" 26 | ;; 27 | *) 28 | TARGET_DEVICE_ARGS="--target-device mac" 29 | ;; 30 | esac 31 | 32 | install_resource() 33 | { 34 | if [[ "$1" = /* ]] ; then 35 | RESOURCE_PATH="$1" 36 | else 37 | RESOURCE_PATH="${PODS_ROOT}/$1" 38 | fi 39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 40 | cat << EOM 41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 42 | EOM 43 | exit 1 44 | fi 45 | case $RESOURCE_PATH in 46 | *.storyboard) 47 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 48 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 49 | ;; 50 | *.xib) 51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 53 | ;; 54 | *.framework) 55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 59 | ;; 60 | *.xcdatamodel) 61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 63 | ;; 64 | *.xcdatamodeld) 65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 67 | ;; 68 | *.xcmappingmodel) 69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 71 | ;; 72 | *.xcassets) 73 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 75 | ;; 76 | *) 77 | echo "$RESOURCE_PATH" 78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 79 | ;; 80 | esac 81 | } 82 | 83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 88 | fi 89 | rm -f "$RESOURCES_TO_COPY" 90 | 91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 92 | then 93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 95 | while read line; do 96 | if [[ $line != "${PODS_ROOT}*" ]]; then 97 | XCASSET_FILES+=("$line") 98 | fi 99 | done <<<"$OTHER_XCASSETS" 100 | 101 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 102 | fi 103 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CHGInputAccessoryView_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CHGInputAccessoryView_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "CHGInputAccessoryView" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CHGInputAccessoryView_Example { 2 | umbrella header "Pods-CHGInputAccessoryView_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Example/Pods-CHGInputAccessoryView_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "CHGInputAccessoryView" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## CHGInputAccessoryView 5 | 6 | Copyright (c) 2017 Christian Greth 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2017 Christian Greth <greth.christian@googlemail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | CHGInputAccessoryView 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CHGInputAccessoryView_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CHGInputAccessoryView_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" 63 | 64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 65 | code_sign_cmd="$code_sign_cmd &" 66 | fi 67 | echo "$code_sign_cmd" 68 | eval "$code_sign_cmd" 69 | fi 70 | } 71 | 72 | # Strip invalid architectures 73 | strip_invalid_archs() { 74 | binary="$1" 75 | # Get architectures for current file 76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 77 | stripped="" 78 | for arch in $archs; do 79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 80 | # Strip non-valid architectures in-place 81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 82 | stripped="$stripped $arch" 83 | fi 84 | done 85 | if [[ "$stripped" ]]; then 86 | echo "Stripped $binary of architectures:$stripped" 87 | fi 88 | } 89 | 90 | 91 | if [[ "$CONFIGURATION" == "Debug" ]]; then 92 | install_framework "$BUILT_PRODUCTS_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework" 93 | fi 94 | if [[ "$CONFIGURATION" == "Release" ]]; then 95 | install_framework "$BUILT_PRODUCTS_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework" 96 | fi 97 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 98 | wait 99 | fi 100 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | 3) 22 | TARGET_DEVICE_ARGS="--target-device tv" 23 | ;; 24 | 4) 25 | TARGET_DEVICE_ARGS="--target-device watch" 26 | ;; 27 | *) 28 | TARGET_DEVICE_ARGS="--target-device mac" 29 | ;; 30 | esac 31 | 32 | install_resource() 33 | { 34 | if [[ "$1" = /* ]] ; then 35 | RESOURCE_PATH="$1" 36 | else 37 | RESOURCE_PATH="${PODS_ROOT}/$1" 38 | fi 39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 40 | cat << EOM 41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 42 | EOM 43 | exit 1 44 | fi 45 | case $RESOURCE_PATH in 46 | *.storyboard) 47 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 48 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 49 | ;; 50 | *.xib) 51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 53 | ;; 54 | *.framework) 55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 59 | ;; 60 | *.xcdatamodel) 61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 63 | ;; 64 | *.xcdatamodeld) 65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 67 | ;; 68 | *.xcmappingmodel) 69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 71 | ;; 72 | *.xcassets) 73 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 75 | ;; 76 | *) 77 | echo "$RESOURCE_PATH" 78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 79 | ;; 80 | esac 81 | } 82 | 83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 88 | fi 89 | rm -f "$RESOURCES_TO_COPY" 90 | 91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 92 | then 93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 95 | while read line; do 96 | if [[ $line != "${PODS_ROOT}*" ]]; then 97 | XCASSET_FILES+=("$line") 98 | fi 99 | done <<<"$OTHER_XCASSETS" 100 | 101 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 102 | fi 103 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CHGInputAccessoryView_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CHGInputAccessoryView_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "CHGInputAccessoryView" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CHGInputAccessoryView_Tests { 2 | umbrella header "Pods-CHGInputAccessoryView_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CHGInputAccessoryView_Tests/Pods-CHGInputAccessoryView_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CHGInputAccessoryView/CHGInputAccessoryView.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "CHGInputAccessoryView" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // CHGInputAccessoryViewTests.m 3 | // CHGInputAccessoryViewTests 4 | // 5 | // Created by Christian on 01/04/2016. 6 | // Copyright (c) 2017 Christian. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface Tests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation Tests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | 36 | -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Christian Greth 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pod/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Pod/Assets/.gitkeep -------------------------------------------------------------------------------- /Pod/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/Pod/Classes/.gitkeep -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryView.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | #import "CHGInputAccessoryViewItem.h" 24 | 25 | @protocol CHGInputAccessoryViewDelegate 26 | 27 | @optional 28 | 29 | /** 30 | Informs the delegate about a tapped item. 31 | 32 | @param item the tapped item 33 | */ 34 | - (void)didTapItem:(CHGInputAccessoryViewItem *)item; 35 | 36 | /** 37 | Informs the delegate about a tapped item. 38 | 39 | @param index the tapped item index 40 | */ 41 | - (void)didTapItemAtIndex:(NSUInteger)index; 42 | 43 | @end 44 | 45 | @interface CHGInputAccessoryView : UIToolbar 46 | 47 | /** 48 | * The accessory views delegate object. 49 | */ 50 | @property (nonatomic, weak) id inputAccessoryViewDelegate; 51 | 52 | /** 53 | A boolean value indicating the views visibilty. Attention: the view is also visible while animating out of window. 54 | */ 55 | @property (readonly, getter=isVisible) BOOL visible; 56 | 57 | /** 58 | * InputAccessoryView default height 59 | */ 60 | @property (nonatomic) CGFloat defaultHeight; 61 | 62 | /** 63 | * InputAccessoryView maximum height 64 | */ 65 | @property (nonatomic) CGFloat maxHeight; 66 | 67 | /** 68 | * A finite progress view to show above the InputAccessoryView 69 | */ 70 | @property (readonly, nonatomic) UIProgressView *progressView; 71 | 72 | /** 73 | Builds a new inputAccessoryView. 74 | */ 75 | + (id)inputAccessoryView; 76 | 77 | /** 78 | Builds a new inputAccessoryView. 79 | 80 | @param height specify a view height 81 | */ 82 | + (id)inputAccessoryViewWithHeight:(CGFloat)height; 83 | 84 | + (id)inputAccessoryViewTextFieldWithButtonTitle:(NSString *)title textFieldDelegate:(id)delegate; 85 | 86 | + (id)inputAccessoryViewTextViewWithButtonTitle:(NSString *)title textViewDelegate:(id)delegate; 87 | 88 | /** 89 | * Get item at specific index. 90 | * 91 | * @param index items index 92 | * 93 | * @return a item 94 | */ 95 | - (CHGInputAccessoryViewItem *)itemAtIndex:(NSUInteger)index; 96 | 97 | /** 98 | Adds an item to the right of the inputAccessoryView. 99 | 100 | @param item the item to add 101 | @param animated add the item animated 102 | */ 103 | - (void)addItem:(CHGInputAccessoryViewItem *)item animated:(BOOL)animated; 104 | 105 | /** 106 | Adds an item on a specific index of the inputAccessoryView. 107 | 108 | @param item the item to add 109 | @param index the index position 110 | @param animated add the item animated 111 | */ 112 | - (void)addItem:(CHGInputAccessoryViewItem *)item atIndex:(NSUInteger)index animated:(BOOL)animated; 113 | 114 | /** 115 | Removes an item of inputAccessoryView. 116 | 117 | @param item the item to remove 118 | @param animated remove the item animated 119 | */ 120 | - (void)removeItem:(CHGInputAccessoryViewItem *)item animated:(BOOL)animated;; 121 | 122 | /** 123 | Removes an item at specific index of inputAccessoryView. 124 | 125 | @param index the index of an item to remove 126 | @param animated remove the item animated 127 | */ 128 | - (void)removeItemAtIndex:(NSUInteger)index animated:(BOOL)animated; 129 | 130 | /** 131 | * Enable accessory view item. 132 | * 133 | * @param item the item to enable 134 | */ 135 | - (void)enableItem:(CHGInputAccessoryViewItem *)item; 136 | 137 | /** 138 | * Enable accessory view item. 139 | * 140 | * @param index the index of item to enable 141 | */ 142 | - (void)enableItemAtIndex:(NSUInteger)index; 143 | 144 | /** 145 | * Disable accessory view item. 146 | * 147 | * @param item the item to disable 148 | */ 149 | - (void)disableItem:(CHGInputAccessoryViewItem *)item; 150 | 151 | /** 152 | * Disable accessory view item. 153 | * 154 | * @param index the index of item to disable 155 | */ 156 | - (void)disableItemAtIndex:(NSUInteger)index; 157 | 158 | /** 159 | * Changes InputAccessoryView height. 160 | * 161 | * @param height new InputAccessoryViews height 162 | */ 163 | - (void)resizeToHeight:(CGFloat)height; 164 | 165 | /** 166 | * Re-Calculates the InputAccessoryViews height depending on items preferred heigt. 167 | */ 168 | - (void)updateHeight; 169 | 170 | @end 171 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryView.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGInputAccessoryView.h" 22 | 23 | #import "CHGInputAccessoryViewItemTextField.h" 24 | #import "CHGInputAccessoryViewItemTextView.h" 25 | 26 | @implementation CHGInputAccessoryView { 27 | UIProgressView *_progressView; 28 | CGFloat _itemMargin; 29 | } 30 | 31 | + (id)inputAccessoryView 32 | { 33 | return [[CHGInputAccessoryView alloc] initWithFrame:CGRectMake(0.f, 0.f, CGRectGetWidth([UIScreen mainScreen].bounds), 44.f)]; 34 | } 35 | 36 | + (id)inputAccessoryViewWithHeight:(CGFloat)height 37 | { 38 | return [[CHGInputAccessoryView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([UIScreen mainScreen].bounds), height)]; 39 | } 40 | 41 | + (id)inputAccessoryViewTextFieldWithButtonTitle:(NSString *)title textFieldDelegate:(id)delegate 42 | { 43 | CHGInputAccessoryView *accessoryView = [CHGInputAccessoryView inputAccessoryView]; 44 | 45 | CHGInputAccessoryViewItemTextField *textFieldItem = [CHGInputAccessoryViewItemTextField item]; 46 | textFieldItem.textField.delegate = delegate; 47 | 48 | [accessoryView setItems:@[ textFieldItem, 49 | [CHGInputAccessoryViewItem buttonWithTitle:title] ]]; 50 | 51 | return accessoryView; 52 | } 53 | 54 | + (id)inputAccessoryViewTextViewWithButtonTitle:(NSString *)title textViewDelegate:(id)delegate 55 | { 56 | CHGInputAccessoryView *accessoryView = [CHGInputAccessoryView inputAccessoryViewWithHeight:46.f]; 57 | 58 | CHGInputAccessoryViewItemTextView *textViewItem = [CHGInputAccessoryViewItemTextView item]; 59 | textViewItem.textView.delegate = delegate; 60 | 61 | [accessoryView setItems:@[ textViewItem, 62 | [CHGInputAccessoryViewItem buttonWithTitle:title] ]]; 63 | 64 | return accessoryView; 65 | } 66 | 67 | - (id)initWithFrame:(CGRect)frame 68 | { 69 | self = [super initWithFrame:frame]; 70 | 71 | if (self) { 72 | self.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth); 73 | 74 | self.defaultHeight = CGRectGetHeight(frame); 75 | self.maxHeight = 150.f; 76 | 77 | _itemMargin = 8.f; 78 | } 79 | 80 | return self; 81 | } 82 | 83 | - (void)dealloc 84 | { 85 | [[NSNotificationCenter defaultCenter] removeObserver:self]; 86 | } 87 | 88 | - (UIProgressView *)progressView 89 | { 90 | if (!_progressView) { 91 | _progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.frame), 1)]; 92 | _progressView.progressViewStyle = UIProgressViewStyleBar; 93 | [self addSubview:_progressView]; 94 | } 95 | 96 | return _progressView; 97 | } 98 | 99 | - (BOOL)isVisible 100 | { 101 | return self.superview ? YES : NO; 102 | } 103 | 104 | - (CHGInputAccessoryViewItem *)itemAtIndex:(NSUInteger)index 105 | { 106 | return (CHGInputAccessoryViewItem *)[self.items objectAtIndex:index]; 107 | } 108 | 109 | - (void)setItems:(NSArray *)items 110 | { 111 | [self setItems:items animated:NO]; 112 | } 113 | 114 | - (void)setItems:(NSArray *)items animated:(BOOL)animated 115 | { 116 | for (CHGInputAccessoryViewItem *item in items) { 117 | if (!item.target) { 118 | item.target = self; 119 | item.action = @selector(didTapItem:); 120 | } 121 | } 122 | 123 | [super setItems:items animated:animated]; 124 | } 125 | 126 | - (void)addItem:(CHGInputAccessoryViewItem *)item animated:(BOOL)animated 127 | { 128 | [self addItem:item atIndex:self.items.count animated:animated]; 129 | } 130 | 131 | - (void)addItem:(CHGInputAccessoryViewItem *)item atIndex:(NSUInteger)index animated:(BOOL)animated 132 | { 133 | NSMutableArray *items = [self.items mutableCopy]; 134 | [items insertObject:item atIndex:index]; 135 | 136 | NSArray *newItems = [NSArray arrayWithArray:items]; 137 | 138 | [self setItems:newItems animated:animated]; 139 | } 140 | 141 | - (void)removeItem:(CHGInputAccessoryViewItem *)item animated:(BOOL)animated 142 | { 143 | [self removeItemAtIndex:[self.items indexOfObject:item] animated:animated]; 144 | } 145 | 146 | - (void)removeItemAtIndex:(NSUInteger)index animated:(BOOL)animated 147 | { 148 | NSMutableArray *items = [self.items mutableCopy]; 149 | [items removeObjectAtIndex:index]; 150 | 151 | NSArray *newItems = [NSArray arrayWithArray:items]; 152 | 153 | [self setItems:newItems animated:animated]; 154 | } 155 | 156 | - (void)enableItem:(CHGInputAccessoryViewItem *)item 157 | { 158 | [item setEnabled:YES]; 159 | } 160 | 161 | - (void)enableItemAtIndex:(NSUInteger)index 162 | { 163 | CHGInputAccessoryViewItem *item = (CHGInputAccessoryViewItem *)[self.items objectAtIndex:index]; 164 | [self enableItem:item]; 165 | } 166 | 167 | - (void)disableItem:(CHGInputAccessoryViewItem *)item 168 | { 169 | [item setEnabled:NO]; 170 | } 171 | 172 | - (void)disableItemAtIndex:(NSUInteger)index 173 | { 174 | CHGInputAccessoryViewItem *item = (CHGInputAccessoryViewItem *)[self.items objectAtIndex:index]; 175 | [self disableItem:item]; 176 | } 177 | 178 | - (void)updateHeight 179 | { 180 | CGFloat newHeight = [self maxItemHeight] + 2 * _itemMargin; 181 | 182 | if (newHeight > CGRectGetHeight(self.frame)) { 183 | if (newHeight > self.maxHeight) newHeight = self.maxHeight; 184 | [self resizeToHeight:newHeight]; 185 | return; 186 | } 187 | 188 | if (newHeight < CGRectGetHeight(self.frame)) { 189 | if (newHeight < self.defaultHeight) newHeight = self.defaultHeight; 190 | [self resizeToHeight:newHeight]; 191 | return; 192 | } 193 | } 194 | 195 | - (void)resizeToHeight:(CGFloat)height 196 | { 197 | for (NSLayoutConstraint *constraint in [self constraints]) { 198 | if (constraint.firstAttribute == NSLayoutAttributeHeight) { 199 | constraint.constant = height; 200 | // break; // looks like apple added some more constraints defining the views height 201 | } 202 | } 203 | } 204 | 205 | - (void)layoutSubviews 206 | { 207 | NSMutableArray *flexibleSizeItems = [[NSMutableArray alloc] init]; 208 | CGFloat itemWidth = 0.f; 209 | CGFloat itemMargin = _itemMargin * 2; 210 | for (UIBarButtonItem *item in self.items) { 211 | if ([item isKindOfClass:[CHGInputAccessoryViewItem class]]) { 212 | if (((CHGInputAccessoryViewItem *)item).flexibleSize) { 213 | [flexibleSizeItems addObject:item]; 214 | } else { 215 | UIView *itemView = [item valueForKey:@"view"]; 216 | itemWidth += CGRectGetWidth(itemView.frame) + itemMargin; 217 | // align a custom view 218 | /* 219 | if (item.customView) { 220 | CGRect frame = item.customView.frame; 221 | frame.origin.y = CGRectGetHeight(self.bounds) - CGRectGetHeight(frame) - _itemMargin; 222 | item.customView.frame = frame; 223 | } 224 | */ 225 | } 226 | } 227 | } 228 | 229 | if (flexibleSizeItems.count > 0) { 230 | CGFloat flexItemWidth = (CGRectGetWidth(self.frame) - itemWidth) / flexibleSizeItems.count - itemMargin; 231 | 232 | for (CHGInputAccessoryViewItem *item in flexibleSizeItems) { 233 | CGRect frame = item.customView.frame; 234 | frame.size.width = flexItemWidth; 235 | item.customView.frame = frame; 236 | 237 | [item resizeToHeight:(CGRectGetHeight(self.bounds) - itemMargin)]; 238 | } 239 | } 240 | 241 | [super layoutSubviews]; 242 | } 243 | 244 | #pragma mark - private 245 | 246 | - (CGFloat)maxItemHeight 247 | { 248 | CGFloat height = 0.f; 249 | 250 | for (CHGInputAccessoryViewItem *item in self.items) { 251 | if (item.preferredHeight > height) height = item.preferredHeight; 252 | } 253 | 254 | return height; 255 | } 256 | 257 | - (void)didTapItem:(CHGInputAccessoryViewItem *)item 258 | { 259 | if (item.actionOnTap) { 260 | item.actionOnTap(item); 261 | } 262 | 263 | if ([self.inputAccessoryViewDelegate respondsToSelector:@selector(didTapItem:)]) { 264 | [self.inputAccessoryViewDelegate didTapItem:item]; 265 | } 266 | 267 | if ([self.inputAccessoryViewDelegate respondsToSelector:@selector(didTapItemAtIndex:)]) { 268 | 269 | NSUInteger index = [self.items indexOfObject:item]; 270 | [self.inputAccessoryViewDelegate didTapItemAtIndex:index]; 271 | } 272 | } 273 | 274 | @end 275 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItem.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | @interface CHGInputAccessoryViewItem : UIBarButtonItem 24 | 25 | /** 26 | Set this property to YES to automatically size this item. 27 | */ 28 | @property BOOL flexibleSize; 29 | 30 | /** 31 | Assign an action to perfom after tapping the item. 32 | */ 33 | @property (nonatomic, copy) void (^actionOnTap)(CHGInputAccessoryViewItem *item); 34 | 35 | /** 36 | A fixed space item. 37 | 38 | @param width space width 39 | */ 40 | + (CHGInputAccessoryViewItem *)fixedSpace:(CGFloat)width; 41 | 42 | /** 43 | A flexible space item. 44 | */ 45 | + (CHGInputAccessoryViewItem *)flexibleSpace; 46 | 47 | /** 48 | A separator item. 49 | 50 | @param color separators color 51 | @param height separators height 52 | */ 53 | + (CHGInputAccessoryViewItem *)separatorWithColor:(UIColor *)color height:(CGFloat)height; 54 | 55 | /** 56 | A button with image item. 57 | 58 | @param image button image 59 | */ 60 | + (CHGInputAccessoryViewItem *)buttonWithImage:(UIImage *)image; 61 | 62 | /** 63 | A button with title item. 64 | 65 | @param title button title 66 | */ 67 | + (CHGInputAccessoryViewItem *)buttonWithTitle:(NSString *)title; 68 | 69 | /** 70 | * The preferred item height. Used to resize the InputAccessoryView height. 71 | * 72 | * @return the preffered height for this item - Default: 0px (no resizing) 73 | */ 74 | - (CGFloat)preferredHeight; 75 | 76 | /** 77 | * Resizes a item to a new height. 78 | * 79 | * @param height the new height. 80 | */ 81 | - (void)resizeToHeight:(CGFloat)height; 82 | 83 | @end 84 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItem.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGInputAccessoryViewItem.h" 22 | 23 | @implementation CHGInputAccessoryViewItem 24 | 25 | + (id)fixedSpace:(CGFloat)width 26 | { 27 | CHGInputAccessoryViewItem *fixedSpace = [[CHGInputAccessoryViewItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 28 | fixedSpace.width = width; 29 | 30 | return fixedSpace; 31 | } 32 | 33 | + (id)flexibleSpace 34 | { 35 | CHGInputAccessoryViewItem *flexibleSpace = [[CHGInputAccessoryViewItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 36 | 37 | return flexibleSpace; 38 | } 39 | 40 | + (CHGInputAccessoryViewItem *)buttonWithImage:(UIImage *)image 41 | { 42 | CHGInputAccessoryViewItem *button = [[CHGInputAccessoryViewItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:nil action:nil]; 43 | 44 | return button; 45 | } 46 | 47 | + (CHGInputAccessoryViewItem *)buttonWithTitle:(NSString *)title 48 | { 49 | CHGInputAccessoryViewItem *button = [[CHGInputAccessoryViewItem alloc] initWithTitle:title style:UIBarButtonItemStylePlain target:nil action:nil]; 50 | 51 | return button; 52 | } 53 | 54 | + (CHGInputAccessoryViewItem *)separatorWithColor:(UIColor *)color height:(CGFloat)height 55 | { 56 | UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1.f, height)]; 57 | view.backgroundColor = color; 58 | 59 | CHGInputAccessoryViewItem *separator = [[CHGInputAccessoryViewItem alloc] initWithCustomView:view]; 60 | 61 | return separator; 62 | } 63 | 64 | - (CGFloat)preferredHeight 65 | { 66 | return 0.f; 67 | } 68 | 69 | - (void)resizeToHeight:(CGFloat)height 70 | { 71 | if (!self.customView) return; 72 | 73 | CGRect frame = self.customView.frame; 74 | frame.size.height = height; 75 | self.customView.frame = frame; 76 | } 77 | 78 | @end 79 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItemSwitch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGInputAccessoryViewItem.h" 22 | 23 | @interface CHGInputAccessoryViewItemSwitch : CHGInputAccessoryViewItem 24 | 25 | /** 26 | The UISwitch of this item. 27 | */ 28 | @property (nonatomic, readonly, retain) UISwitch *switchView; 29 | 30 | /** 31 | Builds a new item with a textField. 32 | */ 33 | + (CHGInputAccessoryViewItemSwitch *)item; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItemSwitch.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGInputAccessoryView.h" 22 | #import "CHGInputAccessoryViewItemSwitch.h" 23 | 24 | @implementation CHGInputAccessoryViewItemSwitch 25 | 26 | @synthesize switchView = _switchView; 27 | 28 | + (CHGInputAccessoryViewItemSwitch *)item 29 | { 30 | return [[CHGInputAccessoryViewItemSwitch alloc] initWithCustomView:[[UISwitch alloc] init]]; 31 | } 32 | 33 | - (id)initWithCustomView:(UIView *)customView 34 | { 35 | NSAssert([customView isKindOfClass:[UISwitch class]], @"customView must be of class UISwitch."); 36 | 37 | self = [super initWithCustomView:customView]; 38 | 39 | if (self) { 40 | 41 | _switchView = (UISwitch *)customView; 42 | [_switchView addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; 43 | } 44 | 45 | return self; 46 | } 47 | 48 | - (void)valueChanged:(UISwitch *)switchView 49 | { 50 | if ([self.target respondsToSelector:self.action]) { 51 | [self.target performSelector:self.action withObject:self afterDelay:0.f]; 52 | } 53 | } 54 | 55 | - (void)setEnabled:(BOOL)enabled 56 | { 57 | [super setEnabled:enabled]; 58 | [_switchView setEnabled:enabled]; 59 | } 60 | 61 | - (BOOL)isEnabled 62 | { 63 | return _switchView.isEnabled; 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItemTextField.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | #import "CHGInputAccessoryViewItem.h" 24 | 25 | @interface CHGInputAccessoryViewItemTextField : CHGInputAccessoryViewItem 26 | 27 | /** 28 | The textField of this item. 29 | */ 30 | @property (nonatomic, readonly, retain) UITextField *textField; 31 | 32 | /** 33 | Builds a new item with a textField. 34 | */ 35 | + (CHGInputAccessoryViewItemTextField *)item; 36 | 37 | /** 38 | Builds a new item with a textField. 39 | 40 | @param delegate the UITextFieldDelegate 41 | */ 42 | + (CHGInputAccessoryViewItemTextField *)itemWithDelegate:(id)delegate; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItemTextField.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGInputAccessoryViewItemTextField.h" 22 | 23 | @implementation CHGInputAccessoryViewItemTextField 24 | 25 | @synthesize textField = _textField; 26 | 27 | + (CHGInputAccessoryViewItemTextField *)item 28 | { 29 | return [[CHGInputAccessoryViewItemTextField alloc] initWithCustomView:[[UITextField alloc] init]]; 30 | } 31 | 32 | + (CHGInputAccessoryViewItemTextField *)itemWithDelegate:(id)delegate 33 | { 34 | CHGInputAccessoryViewItemTextField *item = [[CHGInputAccessoryViewItemTextField alloc] initWithCustomView:[[UITextField alloc] init]]; 35 | item.textField.delegate = delegate; 36 | 37 | return item; 38 | } 39 | 40 | - (id)initWithCustomView:(UIView *)customView 41 | { 42 | NSAssert([customView isKindOfClass:[UITextField class]], @"customView must be of class UITextField."); 43 | 44 | self = [super initWithCustomView:customView]; 45 | 46 | if (self) { 47 | self.flexibleSize = YES; 48 | 49 | _textField = (UITextField *)customView; 50 | _textField.returnKeyType = UIReturnKeyDone; 51 | _textField.autocorrectionType = UITextAutocorrectionTypeNo; 52 | _textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 53 | _textField.clearButtonMode = UITextFieldViewModeWhileEditing; 54 | _textField.borderStyle = UITextBorderStyleRoundedRect; 55 | _textField.autoresizingMask = UIViewAutoresizingFlexibleWidth; 56 | } 57 | 58 | return self; 59 | } 60 | 61 | - (void)setEnabled:(BOOL)enabled 62 | { 63 | [super setEnabled:enabled]; 64 | [_textField setEnabled:enabled]; 65 | } 66 | 67 | - (BOOL)isEnabled 68 | { 69 | return _textField.isEnabled; 70 | } 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItemTextView.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import 22 | 23 | @interface CHGInputAccessoryViewItemTextView : CHGInputAccessoryViewItem 24 | 25 | /** 26 | The textView of this item. 27 | */ 28 | @property (nonatomic, readonly, retain) UITextView *textView; 29 | 30 | /** 31 | Builds a new item with a textView. 32 | */ 33 | + (CHGInputAccessoryViewItemTextView *)item; 34 | 35 | /** 36 | Builds a new item with a textView. 37 | 38 | @param delegate the UITextViewDelegate 39 | */ 40 | + (CHGInputAccessoryViewItemTextView *)itemWithDelegate:(id)delegate; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Pod/Classes/CHGInputAccessoryViewItemTextView.m: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Christian Greth 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | // THE SOFTWARE. 20 | 21 | #import "CHGInputAccessoryViewItemTextView.h" 22 | 23 | @implementation CHGInputAccessoryViewItemTextView 24 | 25 | @synthesize textView = _textView; 26 | 27 | + (CHGInputAccessoryViewItemTextView *)item 28 | { 29 | return [[CHGInputAccessoryViewItemTextView alloc] initWithCustomView:[[UITextView alloc] init]]; 30 | } 31 | 32 | + (CHGInputAccessoryViewItemTextView *)itemWithDelegate:(id)delegate 33 | { 34 | CHGInputAccessoryViewItemTextView *item = [[CHGInputAccessoryViewItemTextView alloc] initWithCustomView:[[UITextView alloc] init]]; 35 | item.textView.delegate = delegate; 36 | 37 | return item; 38 | } 39 | 40 | - (id)initWithCustomView:(UIView *)customView 41 | { 42 | NSAssert([customView isKindOfClass:[UITextView class]], @"customView must be of class UITextView."); 43 | 44 | self = [super initWithCustomView:customView]; 45 | 46 | if (self) { 47 | self.flexibleSize = YES; 48 | 49 | _textView = (UITextView *)customView; 50 | 51 | // textView setting 52 | _textView.returnKeyType = UIReturnKeyDone; 53 | _textView.autocorrectionType = UITextAutocorrectionTypeNo; 54 | _textView.autocapitalizationType = UITextAutocapitalizationTypeNone; 55 | 56 | // textView styling 57 | _textView.layer.borderColor = [[UIColor grayColor] CGColor]; 58 | _textView.layer.borderWidth = 0.5f; 59 | _textView.layer.cornerRadius = 5.f; 60 | _textView.clipsToBounds = YES; 61 | 62 | // textView sizing 63 | _textView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 64 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contentSizeChanged) name:UITextViewTextDidChangeNotification object:_textView]; 65 | } 66 | 67 | return self; 68 | } 69 | 70 | - (void)dealloc 71 | { 72 | [[NSNotificationCenter defaultCenter] removeObserver:_textView]; 73 | } 74 | 75 | - (void)setEnabled:(BOOL)enabled 76 | { 77 | [super setEnabled:enabled]; 78 | [_textView setEditable:enabled]; 79 | } 80 | 81 | - (BOOL)isEnabled 82 | { 83 | return _textView.isEditable; 84 | } 85 | 86 | - (void)contentSizeChanged 87 | { 88 | CHGInputAccessoryView *accessoryView = (CHGInputAccessoryView *)[self.customView superview]; 89 | 90 | [accessoryView updateHeight]; 91 | } 92 | 93 | - (CGFloat)preferredHeight 94 | { 95 | return _textView.contentSize.height; 96 | } 97 | 98 | - (void)resizeToHeight:(CGFloat)height 99 | { 100 | [super resizeToHeight:height]; 101 | 102 | if (height >= _textView.contentSize.height) { 103 | [_textView scrollRangeToVisible:NSMakeRange(0, 0)]; 104 | return; 105 | } 106 | 107 | [_textView scrollRangeToVisible:NSMakeRange(_textView.text.length - 1, 1)]; 108 | } 109 | 110 | @end 111 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CHGInputAccessoryView 2 | 3 | [![Version](https://img.shields.io/cocoapods/v/CHGInputAccessoryView.svg?style=flat)](http://cocoapods.org/pods/CHGInputAccessoryView) 4 | [![License](https://img.shields.io/cocoapods/l/CHGInputAccessoryView.svg?style=flat)](http://cocoapods.org/pods/CHGInputAccessoryView) 5 | [![Platform](https://img.shields.io/cocoapods/p/CHGInputAccessoryView.svg?style=flat)](http://cocoapods.org/pods/CHGInputAccessoryView) 6 | 7 | ## Usage 8 | 9 | ![Screenshot of example CHGInputAccessoryView](example.gif) 10 | 11 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 12 | 13 | ## Installation 14 | 15 | CHGInputAccessoryView is available through [CocoaPods](http://cocoapods.org). To install 16 | it, simply add the following line to your Podfile: 17 | 18 | ```ruby 19 | pod "CHGInputAccessoryView" 20 | ``` 21 | 22 | ## Usage 23 | 24 | ### Prepare a UIView or UIViewController 25 | 26 | At first you must prepare a UIView or a UIViewController to become a first responder and attach an input accessory view. 27 | 28 | Make UIView/UIViewController property inputAccessoryView writeable: 29 | 30 | ```objc 31 | @property (nonatomic, readwrite, retain) UIView *inputAccessoryView; 32 | ``` 33 | 34 | Make sure your UIView/UIViewController can become first responder: 35 | ```objc 36 | - (BOOL)canBecomeFirstResponder 37 | { 38 | return YES; 39 | } 40 | ``` 41 | 42 | ### Set up a CHGInputAccessoryView 43 | 44 | Setting up a new CHGInputAccessoryView is as simple as setting up a UIToolbar. 45 | 46 | ```objc 47 | // get an instance of CHGInputAccessoryView 48 | CHGInputAccessoryView *accessoryView = [CHGInputAccessoryView inputAccessoryView]; 49 | 50 | // optionally define a delegate 51 | accessoryView.inputAccessoryViewDelegate = self; 52 | 53 | // create a CHGInputAccessoryViewItem 54 | CHGInputAccessoryViewItem *trashItem = [CHGInputAccessoryViewItem buttonWithTitle:@"Trash"]; 55 | 56 | // attach accessory view items 57 | accessoryView.items = @[ trashItem ]; 58 | 59 | // attach the accessory view 60 | self.inputAccessoryView = accessoryView; 61 | ``` 62 | 63 | ### Items 64 | 65 | CHGInputAccessoryView comes with some prebuild items: 66 | 67 | - a button with title 68 | ```objc 69 | [CHGInputAccessoryViewItem buttonWithTitle:@"my title"]; 70 | ``` 71 | 72 | - a button with image 73 | ```objc 74 | [CHGInputAccessoryViewItem buttonWithImage:[UIImage imageNamed:@"my_image"]]; 75 | ``` 76 | 77 | - a separator 78 | ```objc 79 | [CHGInputAccessoryViewItem separatorWithColor:[UIColor lightGrayColor] height:20.f] 80 | ``` 81 | - a UITextField 82 | ```objc 83 | CHGInputAccessoryViewItemTextField *item = [CHGInputAccessoryViewItemTextField item]; 84 | item.textField.placeholder = @"Enter your text"; 85 | ``` 86 | - a UITextView 87 | ```objc 88 | CHGInputAccessoryViewItemTextField *item = [CHGInputAccessoryViewItemTextField item]; 89 | item.textField.placeholder = @"Enter your text"; 90 | ``` 91 | Tip: Modify the textField or textView by accessing CHGInputAccessoryViewItemTextField/TextView property textField/textView. The textField/textView will automatically resize to the maximum availabe width. The textView also resizes automatically to maximum available height. If you want a fixed size for your textField/textView assign a frame on it and set the CHGInputAccessoryViewItem property flexibleSize to NO. 92 | - a UISwith 93 | ```objc 94 | CHGInputAccessoryViewItemSwitch *item = [CHGInputAccessoryViewItemSwitch item]; 95 | item.switchView.on = YES; 96 | ``` 97 | - a UIProgressView 98 | The InputAccessoryView has a build-in UIProgressView. 99 | ```objc 100 | CHGInputAccessoryView *accessoryView = [CHGInputAccessoryView inputAccessoryView]; 101 | accessoryView.progressView.progress = 0.5f; 102 | ``` 103 | - a flexible or fixed space 104 | ```objc 105 | [CHGInputAccessoryViewItemTextField flexibleSpace]; 106 | [CHGInputAccessoryViewItemTextField fixedSpace:25.f]; 107 | ``` 108 | 109 | #### Enable/Disable items 110 | 111 | ```objc 112 | // enable item 113 | [accessoryView enableItem:item]; 114 | 115 | // disable item 116 | [accessoryView disableItemAtIndex:1]; 117 | ``` 118 | 119 | ### Actions 120 | 121 | - InputAccssoryViewDelegate 122 | 123 | To use the build-in delegates (didTapItem: and didTapItemAtIndex:) assign a CHGInputAccessoryViewDelegate. 124 | 125 | ```objc 126 | accessoryView.inputAccessoryViewDelegate = self; 127 | ``` 128 | 129 | - Assign target and action 130 | ```objc 131 | item.target = self; 132 | item.action = @selector(didTapMyItem:); 133 | ``` 134 | By setting the target the build in delegates will not be called for this item. 135 | 136 | - Assign action block 137 | ```objc 138 | item.actionOnTap = ^(CHGInputAccessoryViewItem *item){ 139 | NSLog(@"Tapped my item..."); 140 | }; 141 | ``` 142 | 143 | ### Add and remove items 144 | 145 | ```objc 146 | 147 | - (void)setItems:(NSArray *)items; 148 | - (void)setItems:(NSArray *)items animated:(BOOL)animated; 149 | 150 | - (void)addItem:(CHGInputAccessoryViewItem *)item animated:(BOOL)animated; 151 | - (void)addItem:(CHGInputAccessoryViewItem *)item atIndex:(NSUInteger)index animated:(BOOL)animated; 152 | 153 | - (void)removeItem:(CHGInputAccessoryViewItem *)item animated:(BOOL)animated;; 154 | - (void)removeItemAtIndex:(NSUInteger)index animated:(BOOL)animated; 155 | ``` 156 | 157 | ## Author 158 | 159 | Christian Greth, greth.christian@googlemail.com 160 | 161 | ## License 162 | 163 | CHGInputAccessoryView is available under the MIT license. See the LICENSE file for more info. 164 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grethi/CHGInputAccessoryView/8dd1f2f57e94d591ff4db63f2bd6a0c2fdb8e2cc/example.gif --------------------------------------------------------------------------------