├── .gitignore ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── CHANGELOG.md ├── Icon.png ├── LICENSE ├── LUAutocompleteView.podspec ├── LUAutocompleteView.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcshareddata │ └── xcschemes │ └── LUAutocompleteView.xcscheme ├── LUAutocompleteView.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── LUAutocompleteViewExample ├── LUAutocompleteViewExample.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ └── LUAutocompleteViewExample.xcscheme ├── LUAutocompleteViewExample.xcworkspace │ └── contents.xcworkspacedata ├── LUAutocompleteViewExample │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── icon.png │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CustomAutocompleteTableViewCell.swift │ ├── Info.plist │ └── ViewController.swift ├── Podfile ├── Podfile.lock └── Pods │ ├── Local Podspecs │ └── LUAutocompleteView.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ └── project.pbxproj │ └── Target Support Files │ ├── LUAutocompleteView │ ├── LUAutocompleteView-Info.plist │ ├── LUAutocompleteView-dummy.m │ ├── LUAutocompleteView-prefix.pch │ ├── LUAutocompleteView-umbrella.h │ ├── LUAutocompleteView.debug.xcconfig │ ├── LUAutocompleteView.modulemap │ └── LUAutocompleteView.release.xcconfig │ └── Pods-LUAutocompleteViewExample │ ├── Pods-LUAutocompleteViewExample-Info.plist │ ├── Pods-LUAutocompleteViewExample-acknowledgements.markdown │ ├── Pods-LUAutocompleteViewExample-acknowledgements.plist │ ├── Pods-LUAutocompleteViewExample-dummy.m │ ├── Pods-LUAutocompleteViewExample-frameworks-Debug-input-files.xcfilelist │ ├── Pods-LUAutocompleteViewExample-frameworks-Debug-output-files.xcfilelist │ ├── Pods-LUAutocompleteViewExample-frameworks-Release-input-files.xcfilelist │ ├── Pods-LUAutocompleteViewExample-frameworks-Release-output-files.xcfilelist │ ├── Pods-LUAutocompleteViewExample-frameworks.sh │ ├── Pods-LUAutocompleteViewExample-umbrella.h │ ├── Pods-LUAutocompleteViewExample.debug.xcconfig │ ├── Pods-LUAutocompleteViewExample.modulemap │ └── Pods-LUAutocompleteViewExample.release.xcconfig ├── Package.swift ├── README.md ├── ReadmeIcon.png └── Sources ├── LUAutocompleteTableViewCell.swift ├── LUAutocompleteView.swift ├── LUAutocompleteViewDataSource.swift └── LUAutocompleteViewDelegate.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xcuserstate 23 | 24 | ## Obj-C/Swift specific 25 | *.hmap 26 | *.ipa 27 | *.dSYM.zip 28 | *.dSYM 29 | 30 | ## Playgrounds 31 | timeline.xctimeline 32 | playground.xcworkspace 33 | 34 | # Swift Package Manager 35 | # 36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 37 | # Packages/ 38 | .build/ 39 | 40 | # CocoaPods 41 | # 42 | # We recommend against adding the Pods directory to your .gitignore. However 43 | # you should judge for yourself, the pros and cons are mentioned at: 44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 45 | # 46 | # Pods/ 47 | 48 | # Carthage 49 | # 50 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 51 | # Carthage/Checkouts 52 | 53 | Carthage/Build 54 | 55 | # fastlane 56 | # 57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 58 | # screenshots whenever they are needed. 59 | # For more information about the recommended setup visit: 60 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 61 | 62 | fastlane/report.xml 63 | fastlane/Preview.html 64 | fastlane/screenshots 65 | fastlane/test_output 66 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [5.0.0](https://github.com/LaurentiuUngur/LUAutocompleteView/releases/tag/5.0.0) 4 | 5 | - Swift 5.9 and Xcode 15 support 6 | - Drop Carthage support 7 | - Drop support below iOS 13 8 | 9 | ## [4.0.0](https://github.com/LaurentiuUngur/LUAutocompleteView/releases/tag/4.0.0) 10 | 11 | - Swift 5 and Xcode 10.2 support 12 | 13 | ## [3.0.0](https://github.com/LaurentiuUngur/LUAutocompleteView/releases/tag/3.0.0) 14 | 15 | - Swift 4.2 and Xcode 10 support 16 | 17 | ## [2.0.0](https://github.com/LaurentiuUngur/LUAutocompleteView/releases/tag/2.0.0) 18 | 19 | - Swift 4 and Xcode 9 support 20 | - Add Carthage support 21 | 22 | ## [1.0.1](https://github.com/LaurentiuUngur/LUAutocompleteView/releases/tag/1.0.1) 23 | 24 | - Add `shouldHideAfterSelecting` property 25 | 26 | ## [1.0.0](https://github.com/LaurentiuUngur/LUAutocompleteView/releases/tag/1.0.0) 27 | 28 | - Initial version 29 | -------------------------------------------------------------------------------- /Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LaurentiuUngur/LUAutocompleteView/4d7052a058a46bfce6711a8475ca1da576230a1b/Icon.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Laurentiu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LUAutocompleteView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "LUAutocompleteView" 3 | s.version = "5.0.0" 4 | s.summary = "Highly configurable autocomplete view that is attachable to any UITextField" 5 | s.description = "Easy to use and highly configurable autocomplete view that is attachable to any UITextField" 6 | 7 | s.homepage = "https://github.com/LaurentiuUngur/LUAutocompleteView" 8 | s.license = { :type => "MIT", :file => "LICENSE" } 9 | s.source = { :git => "https://github.com/LaurentiuUngur/LUAutocompleteView.git", :tag => "#{s.version}" } 10 | s.author = { "Laurentiu Ungur" => "laurentyu1995@gmail.com" } 11 | 12 | s.requires_arc = true 13 | s.ios.deployment_target = '13.0' 14 | s.swift_version = '5.9' 15 | 16 | s.source_files = "Sources/*.{swift}" 17 | s.preserve_paths = "README*" 18 | end 19 | -------------------------------------------------------------------------------- /LUAutocompleteView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 60; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | CF2B733F1EAE8916009056D2 /* LUAutocompleteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2B733E1EAE8916009056D2 /* LUAutocompleteView.swift */; }; 11 | CF2B73411EAE896F009056D2 /* LUAutocompleteViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2B73401EAE896F009056D2 /* LUAutocompleteViewDelegate.swift */; }; 12 | CF2B73431EAE898B009056D2 /* LUAutocompleteViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2B73421EAE898B009056D2 /* LUAutocompleteViewDataSource.swift */; }; 13 | CF2B73451EAE89A6009056D2 /* LUAutocompleteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2B73441EAE89A6009056D2 /* LUAutocompleteTableViewCell.swift */; }; 14 | /* End PBXBuildFile section */ 15 | 16 | /* Begin PBXFileReference section */ 17 | CF2B732E1EAE889C009056D2 /* LUAutocompleteView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LUAutocompleteView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 18 | CF2B733E1EAE8916009056D2 /* LUAutocompleteView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LUAutocompleteView.swift; sourceTree = ""; }; 19 | CF2B73401EAE896F009056D2 /* LUAutocompleteViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LUAutocompleteViewDelegate.swift; sourceTree = ""; }; 20 | CF2B73421EAE898B009056D2 /* LUAutocompleteViewDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LUAutocompleteViewDataSource.swift; sourceTree = ""; }; 21 | CF2B73441EAE89A6009056D2 /* LUAutocompleteTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LUAutocompleteTableViewCell.swift; sourceTree = ""; }; 22 | /* End PBXFileReference section */ 23 | 24 | /* Begin PBXFrameworksBuildPhase section */ 25 | CF2B732A1EAE889C009056D2 /* Frameworks */ = { 26 | isa = PBXFrameworksBuildPhase; 27 | buildActionMask = 2147483647; 28 | files = ( 29 | ); 30 | runOnlyForDeploymentPostprocessing = 0; 31 | }; 32 | /* End PBXFrameworksBuildPhase section */ 33 | 34 | /* Begin PBXGroup section */ 35 | CF2B73241EAE889C009056D2 = { 36 | isa = PBXGroup; 37 | children = ( 38 | CF2B73391EAE88DC009056D2 /* Sources */, 39 | CF2B732F1EAE889C009056D2 /* Products */, 40 | ); 41 | sourceTree = ""; 42 | }; 43 | CF2B732F1EAE889C009056D2 /* Products */ = { 44 | isa = PBXGroup; 45 | children = ( 46 | CF2B732E1EAE889C009056D2 /* LUAutocompleteView.framework */, 47 | ); 48 | name = Products; 49 | sourceTree = ""; 50 | }; 51 | CF2B73391EAE88DC009056D2 /* Sources */ = { 52 | isa = PBXGroup; 53 | children = ( 54 | CF2B73441EAE89A6009056D2 /* LUAutocompleteTableViewCell.swift */, 55 | CF2B733E1EAE8916009056D2 /* LUAutocompleteView.swift */, 56 | CF2B73421EAE898B009056D2 /* LUAutocompleteViewDataSource.swift */, 57 | CF2B73401EAE896F009056D2 /* LUAutocompleteViewDelegate.swift */, 58 | ); 59 | path = Sources; 60 | sourceTree = ""; 61 | }; 62 | /* End PBXGroup section */ 63 | 64 | /* Begin PBXHeadersBuildPhase section */ 65 | CF2B732B1EAE889C009056D2 /* Headers */ = { 66 | isa = PBXHeadersBuildPhase; 67 | buildActionMask = 2147483647; 68 | files = ( 69 | ); 70 | runOnlyForDeploymentPostprocessing = 0; 71 | }; 72 | /* End PBXHeadersBuildPhase section */ 73 | 74 | /* Begin PBXNativeTarget section */ 75 | CF2B732D1EAE889C009056D2 /* LUAutocompleteView */ = { 76 | isa = PBXNativeTarget; 77 | buildConfigurationList = CF2B73361EAE889C009056D2 /* Build configuration list for PBXNativeTarget "LUAutocompleteView" */; 78 | buildPhases = ( 79 | CF2B73291EAE889C009056D2 /* Sources */, 80 | CF2B732A1EAE889C009056D2 /* Frameworks */, 81 | CF2B732B1EAE889C009056D2 /* Headers */, 82 | CF2B732C1EAE889C009056D2 /* Resources */, 83 | ); 84 | buildRules = ( 85 | ); 86 | dependencies = ( 87 | ); 88 | name = LUAutocompleteView; 89 | productName = LUAutocompleteView; 90 | productReference = CF2B732E1EAE889C009056D2 /* LUAutocompleteView.framework */; 91 | productType = "com.apple.product-type.framework"; 92 | }; 93 | /* End PBXNativeTarget section */ 94 | 95 | /* Begin PBXProject section */ 96 | CF2B73251EAE889C009056D2 /* Project object */ = { 97 | isa = PBXProject; 98 | attributes = { 99 | BuildIndependentTargetsInParallel = YES; 100 | LastUpgradeCheck = 1500; 101 | ORGANIZATIONNAME = "Laurentiu Ungur"; 102 | TargetAttributes = { 103 | CF2B732D1EAE889C009056D2 = { 104 | CreatedOnToolsVersion = 8.3.2; 105 | LastSwiftMigration = 1020; 106 | ProvisioningStyle = Automatic; 107 | }; 108 | }; 109 | }; 110 | buildConfigurationList = CF2B73281EAE889C009056D2 /* Build configuration list for PBXProject "LUAutocompleteView" */; 111 | compatibilityVersion = "Xcode 15.0"; 112 | developmentRegion = en; 113 | hasScannedForEncodings = 0; 114 | knownRegions = ( 115 | en, 116 | Base, 117 | ); 118 | mainGroup = CF2B73241EAE889C009056D2; 119 | productRefGroup = CF2B732F1EAE889C009056D2 /* Products */; 120 | projectDirPath = ""; 121 | projectRoot = ""; 122 | targets = ( 123 | CF2B732D1EAE889C009056D2 /* LUAutocompleteView */, 124 | ); 125 | }; 126 | /* End PBXProject section */ 127 | 128 | /* Begin PBXResourcesBuildPhase section */ 129 | CF2B732C1EAE889C009056D2 /* Resources */ = { 130 | isa = PBXResourcesBuildPhase; 131 | buildActionMask = 2147483647; 132 | files = ( 133 | ); 134 | runOnlyForDeploymentPostprocessing = 0; 135 | }; 136 | /* End PBXResourcesBuildPhase section */ 137 | 138 | /* Begin PBXSourcesBuildPhase section */ 139 | CF2B73291EAE889C009056D2 /* Sources */ = { 140 | isa = PBXSourcesBuildPhase; 141 | buildActionMask = 2147483647; 142 | files = ( 143 | CF2B73431EAE898B009056D2 /* LUAutocompleteViewDataSource.swift in Sources */, 144 | CF2B73411EAE896F009056D2 /* LUAutocompleteViewDelegate.swift in Sources */, 145 | CF2B73451EAE89A6009056D2 /* LUAutocompleteTableViewCell.swift in Sources */, 146 | CF2B733F1EAE8916009056D2 /* LUAutocompleteView.swift in Sources */, 147 | ); 148 | runOnlyForDeploymentPostprocessing = 0; 149 | }; 150 | /* End PBXSourcesBuildPhase section */ 151 | 152 | /* Begin XCBuildConfiguration section */ 153 | CF2B73341EAE889C009056D2 /* Debug */ = { 154 | isa = XCBuildConfiguration; 155 | buildSettings = { 156 | ALWAYS_SEARCH_USER_PATHS = NO; 157 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 158 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 159 | CLANG_ANALYZER_NONNULL = YES; 160 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 161 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 162 | CLANG_CXX_LIBRARY = "libc++"; 163 | CLANG_ENABLE_MODULES = YES; 164 | CLANG_ENABLE_OBJC_ARC = YES; 165 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 166 | CLANG_WARN_BOOL_CONVERSION = YES; 167 | CLANG_WARN_COMMA = YES; 168 | CLANG_WARN_CONSTANT_CONVERSION = YES; 169 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 170 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 171 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 172 | CLANG_WARN_EMPTY_BODY = YES; 173 | CLANG_WARN_ENUM_CONVERSION = YES; 174 | CLANG_WARN_INFINITE_RECURSION = YES; 175 | CLANG_WARN_INT_CONVERSION = YES; 176 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 177 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 178 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 179 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 180 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 181 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 182 | CLANG_WARN_STRICT_PROTOTYPES = YES; 183 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 184 | CLANG_WARN_UNREACHABLE_CODE = YES; 185 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 186 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 187 | COPY_PHASE_STRIP = NO; 188 | CURRENT_PROJECT_VERSION = 1; 189 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 190 | ENABLE_STRICT_OBJC_MSGSEND = YES; 191 | ENABLE_TESTABILITY = YES; 192 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 193 | GCC_C_LANGUAGE_STANDARD = gnu99; 194 | GCC_DYNAMIC_NO_PIC = NO; 195 | GCC_NO_COMMON_BLOCKS = YES; 196 | GCC_OPTIMIZATION_LEVEL = 0; 197 | GCC_PREPROCESSOR_DEFINITIONS = ( 198 | "DEBUG=1", 199 | "$(inherited)", 200 | ); 201 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 202 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 203 | GCC_WARN_UNDECLARED_SELECTOR = YES; 204 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 205 | GCC_WARN_UNUSED_FUNCTION = YES; 206 | GCC_WARN_UNUSED_VARIABLE = YES; 207 | GENERATE_INFOPLIST_FILE = YES; 208 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 209 | MTL_ENABLE_DEBUG_INFO = YES; 210 | ONLY_ACTIVE_ARCH = YES; 211 | SDKROOT = iphoneos; 212 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 213 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 214 | SWIFT_VERSION = 4.2; 215 | TARGETED_DEVICE_FAMILY = "1,2"; 216 | VERSIONING_SYSTEM = "apple-generic"; 217 | VERSION_INFO_PREFIX = ""; 218 | }; 219 | name = Debug; 220 | }; 221 | CF2B73351EAE889C009056D2 /* Release */ = { 222 | isa = XCBuildConfiguration; 223 | buildSettings = { 224 | ALWAYS_SEARCH_USER_PATHS = NO; 225 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 226 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 227 | CLANG_ANALYZER_NONNULL = YES; 228 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 229 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 230 | CLANG_CXX_LIBRARY = "libc++"; 231 | CLANG_ENABLE_MODULES = YES; 232 | CLANG_ENABLE_OBJC_ARC = YES; 233 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 234 | CLANG_WARN_BOOL_CONVERSION = YES; 235 | CLANG_WARN_COMMA = YES; 236 | CLANG_WARN_CONSTANT_CONVERSION = YES; 237 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 238 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 239 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 240 | CLANG_WARN_EMPTY_BODY = YES; 241 | CLANG_WARN_ENUM_CONVERSION = YES; 242 | CLANG_WARN_INFINITE_RECURSION = YES; 243 | CLANG_WARN_INT_CONVERSION = YES; 244 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 245 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 246 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 247 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 248 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 249 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 250 | CLANG_WARN_STRICT_PROTOTYPES = YES; 251 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 252 | CLANG_WARN_UNREACHABLE_CODE = YES; 253 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 254 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 255 | COPY_PHASE_STRIP = NO; 256 | CURRENT_PROJECT_VERSION = 1; 257 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 258 | ENABLE_NS_ASSERTIONS = NO; 259 | ENABLE_STRICT_OBJC_MSGSEND = YES; 260 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 261 | GCC_C_LANGUAGE_STANDARD = gnu99; 262 | GCC_NO_COMMON_BLOCKS = YES; 263 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 264 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 265 | GCC_WARN_UNDECLARED_SELECTOR = YES; 266 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 267 | GCC_WARN_UNUSED_FUNCTION = YES; 268 | GCC_WARN_UNUSED_VARIABLE = YES; 269 | GENERATE_INFOPLIST_FILE = YES; 270 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 271 | MTL_ENABLE_DEBUG_INFO = NO; 272 | SDKROOT = iphoneos; 273 | SWIFT_COMPILATION_MODE = wholemodule; 274 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 275 | SWIFT_VERSION = 4.2; 276 | TARGETED_DEVICE_FAMILY = "1,2"; 277 | VALIDATE_PRODUCT = YES; 278 | VERSIONING_SYSTEM = "apple-generic"; 279 | VERSION_INFO_PREFIX = ""; 280 | }; 281 | name = Release; 282 | }; 283 | CF2B73371EAE889C009056D2 /* Debug */ = { 284 | isa = XCBuildConfiguration; 285 | buildSettings = { 286 | CLANG_ENABLE_MODULES = YES; 287 | CODE_SIGN_IDENTITY = ""; 288 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 289 | DEFINES_MODULE = YES; 290 | DEVELOPMENT_TEAM = ""; 291 | DYLIB_COMPATIBILITY_VERSION = 1; 292 | DYLIB_CURRENT_VERSION = 1; 293 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 294 | ENABLE_MODULE_VERIFIER = YES; 295 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 296 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 297 | LD_RUNPATH_SEARCH_PATHS = ( 298 | "$(inherited)", 299 | "@executable_path/Frameworks", 300 | "@loader_path/Frameworks", 301 | ); 302 | MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; 303 | MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; 304 | PRODUCT_BUNDLE_IDENTIFIER = LU.LUAutocompleteView; 305 | PRODUCT_NAME = "$(TARGET_NAME)"; 306 | SKIP_INSTALL = YES; 307 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 308 | SWIFT_VERSION = 5.0; 309 | }; 310 | name = Debug; 311 | }; 312 | CF2B73381EAE889C009056D2 /* Release */ = { 313 | isa = XCBuildConfiguration; 314 | buildSettings = { 315 | CLANG_ENABLE_MODULES = YES; 316 | CODE_SIGN_IDENTITY = ""; 317 | DEFINES_MODULE = YES; 318 | DEVELOPMENT_TEAM = ""; 319 | DYLIB_COMPATIBILITY_VERSION = 1; 320 | DYLIB_CURRENT_VERSION = 1; 321 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 322 | ENABLE_MODULE_VERIFIER = YES; 323 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 324 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 325 | LD_RUNPATH_SEARCH_PATHS = ( 326 | "$(inherited)", 327 | "@executable_path/Frameworks", 328 | "@loader_path/Frameworks", 329 | ); 330 | MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; 331 | MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; 332 | PRODUCT_BUNDLE_IDENTIFIER = LU.LUAutocompleteView; 333 | PRODUCT_NAME = "$(TARGET_NAME)"; 334 | SKIP_INSTALL = YES; 335 | SWIFT_VERSION = 5.0; 336 | }; 337 | name = Release; 338 | }; 339 | /* End XCBuildConfiguration section */ 340 | 341 | /* Begin XCConfigurationList section */ 342 | CF2B73281EAE889C009056D2 /* Build configuration list for PBXProject "LUAutocompleteView" */ = { 343 | isa = XCConfigurationList; 344 | buildConfigurations = ( 345 | CF2B73341EAE889C009056D2 /* Debug */, 346 | CF2B73351EAE889C009056D2 /* Release */, 347 | ); 348 | defaultConfigurationIsVisible = 0; 349 | defaultConfigurationName = Release; 350 | }; 351 | CF2B73361EAE889C009056D2 /* Build configuration list for PBXNativeTarget "LUAutocompleteView" */ = { 352 | isa = XCConfigurationList; 353 | buildConfigurations = ( 354 | CF2B73371EAE889C009056D2 /* Debug */, 355 | CF2B73381EAE889C009056D2 /* Release */, 356 | ); 357 | defaultConfigurationIsVisible = 0; 358 | defaultConfigurationName = Release; 359 | }; 360 | /* End XCConfigurationList section */ 361 | }; 362 | rootObject = CF2B73251EAE889C009056D2 /* Project object */; 363 | } 364 | -------------------------------------------------------------------------------- /LUAutocompleteView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LUAutocompleteView.xcodeproj/xcshareddata/xcschemes/LUAutocompleteView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 52 | 53 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /LUAutocompleteView.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 12 | 13 | 15 | 16 | 18 | 19 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /LUAutocompleteView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 5ED5063374321A526C9BD445 /* Pods_LUAutocompleteViewExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9522797F532BDFC9E806F79 /* Pods_LUAutocompleteViewExample.framework */; }; 11 | CF2B73531EAE8A7E009056D2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2B73521EAE8A7E009056D2 /* AppDelegate.swift */; }; 12 | CF2B73551EAE8A7E009056D2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2B73541EAE8A7E009056D2 /* ViewController.swift */; }; 13 | CF2B73581EAE8A7E009056D2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF2B73561EAE8A7E009056D2 /* Main.storyboard */; }; 14 | CF2B735A1EAE8A7E009056D2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF2B73591EAE8A7E009056D2 /* Assets.xcassets */; }; 15 | CF2B735D1EAE8A7E009056D2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF2B735B1EAE8A7E009056D2 /* LaunchScreen.storyboard */; }; 16 | CF9218171EAF63B300D754B0 /* CustomAutocompleteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9218161EAF63B300D754B0 /* CustomAutocompleteTableViewCell.swift */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 20BE2DE0E155D4CF2C477078 /* Pods-LUAutocompleteViewExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LUAutocompleteViewExample.debug.xcconfig"; path = "Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.debug.xcconfig"; sourceTree = ""; }; 21 | C9522797F532BDFC9E806F79 /* Pods_LUAutocompleteViewExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LUAutocompleteViewExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 22 | CF2B734F1EAE8A7E009056D2 /* LUAutocompleteViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LUAutocompleteViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 23 | CF2B73521EAE8A7E009056D2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 24 | CF2B73541EAE8A7E009056D2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 25 | CF2B73571EAE8A7E009056D2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 26 | CF2B73591EAE8A7E009056D2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 27 | CF2B735C1EAE8A7E009056D2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 28 | CF2B735E1EAE8A7E009056D2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 29 | CF9218161EAF63B300D754B0 /* CustomAutocompleteTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomAutocompleteTableViewCell.swift; sourceTree = ""; }; 30 | D9E51CCCBD3A5F6C4B93C781 /* Pods-LUAutocompleteViewExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LUAutocompleteViewExample.release.xcconfig"; path = "Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.release.xcconfig"; sourceTree = ""; }; 31 | /* End PBXFileReference section */ 32 | 33 | /* Begin PBXFrameworksBuildPhase section */ 34 | CF2B734C1EAE8A7E009056D2 /* Frameworks */ = { 35 | isa = PBXFrameworksBuildPhase; 36 | buildActionMask = 2147483647; 37 | files = ( 38 | 5ED5063374321A526C9BD445 /* Pods_LUAutocompleteViewExample.framework in Frameworks */, 39 | ); 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXFrameworksBuildPhase section */ 43 | 44 | /* Begin PBXGroup section */ 45 | 839064B8D3ACDB690BA498BE /* Frameworks */ = { 46 | isa = PBXGroup; 47 | children = ( 48 | C9522797F532BDFC9E806F79 /* Pods_LUAutocompleteViewExample.framework */, 49 | ); 50 | name = Frameworks; 51 | sourceTree = ""; 52 | }; 53 | CF2B73461EAE8A7E009056D2 = { 54 | isa = PBXGroup; 55 | children = ( 56 | CF2B73511EAE8A7E009056D2 /* LUAutocompleteViewExample */, 57 | CF2B73501EAE8A7E009056D2 /* Products */, 58 | FC42C9B9F0C60C77B3D4F696 /* Pods */, 59 | 839064B8D3ACDB690BA498BE /* Frameworks */, 60 | ); 61 | sourceTree = ""; 62 | }; 63 | CF2B73501EAE8A7E009056D2 /* Products */ = { 64 | isa = PBXGroup; 65 | children = ( 66 | CF2B734F1EAE8A7E009056D2 /* LUAutocompleteViewExample.app */, 67 | ); 68 | name = Products; 69 | sourceTree = ""; 70 | }; 71 | CF2B73511EAE8A7E009056D2 /* LUAutocompleteViewExample */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | CF2B73521EAE8A7E009056D2 /* AppDelegate.swift */, 75 | CF2B73591EAE8A7E009056D2 /* Assets.xcassets */, 76 | CF9218161EAF63B300D754B0 /* CustomAutocompleteTableViewCell.swift */, 77 | CF2B735E1EAE8A7E009056D2 /* Info.plist */, 78 | CF2B735B1EAE8A7E009056D2 /* LaunchScreen.storyboard */, 79 | CF2B73561EAE8A7E009056D2 /* Main.storyboard */, 80 | CF2B73541EAE8A7E009056D2 /* ViewController.swift */, 81 | ); 82 | path = LUAutocompleteViewExample; 83 | sourceTree = ""; 84 | }; 85 | FC42C9B9F0C60C77B3D4F696 /* Pods */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 20BE2DE0E155D4CF2C477078 /* Pods-LUAutocompleteViewExample.debug.xcconfig */, 89 | D9E51CCCBD3A5F6C4B93C781 /* Pods-LUAutocompleteViewExample.release.xcconfig */, 90 | ); 91 | name = Pods; 92 | path = Pods; 93 | sourceTree = ""; 94 | }; 95 | /* End PBXGroup section */ 96 | 97 | /* Begin PBXNativeTarget section */ 98 | CF2B734E1EAE8A7E009056D2 /* LUAutocompleteViewExample */ = { 99 | isa = PBXNativeTarget; 100 | buildConfigurationList = CF2B73611EAE8A7E009056D2 /* Build configuration list for PBXNativeTarget "LUAutocompleteViewExample" */; 101 | buildPhases = ( 102 | AA905CB548A1D8BDBE27CB62 /* [CP] Check Pods Manifest.lock */, 103 | CF2B734B1EAE8A7E009056D2 /* Sources */, 104 | CF2B734C1EAE8A7E009056D2 /* Frameworks */, 105 | CF2B734D1EAE8A7E009056D2 /* Resources */, 106 | 6BF85B7D76F3C6B405ED1367 /* [CP] Embed Pods Frameworks */, 107 | ); 108 | buildRules = ( 109 | ); 110 | dependencies = ( 111 | ); 112 | name = LUAutocompleteViewExample; 113 | productName = LUAutocompleteViewExample; 114 | productReference = CF2B734F1EAE8A7E009056D2 /* LUAutocompleteViewExample.app */; 115 | productType = "com.apple.product-type.application"; 116 | }; 117 | /* End PBXNativeTarget section */ 118 | 119 | /* Begin PBXProject section */ 120 | CF2B73471EAE8A7E009056D2 /* Project object */ = { 121 | isa = PBXProject; 122 | attributes = { 123 | BuildIndependentTargetsInParallel = YES; 124 | LastSwiftUpdateCheck = 0830; 125 | LastUpgradeCheck = 1500; 126 | ORGANIZATIONNAME = "Laurentiu Ungur"; 127 | TargetAttributes = { 128 | CF2B734E1EAE8A7E009056D2 = { 129 | CreatedOnToolsVersion = 8.3.2; 130 | LastSwiftMigration = 1020; 131 | ProvisioningStyle = Automatic; 132 | }; 133 | }; 134 | }; 135 | buildConfigurationList = CF2B734A1EAE8A7E009056D2 /* Build configuration list for PBXProject "LUAutocompleteViewExample" */; 136 | compatibilityVersion = "Xcode 14.0"; 137 | developmentRegion = en; 138 | hasScannedForEncodings = 0; 139 | knownRegions = ( 140 | en, 141 | Base, 142 | ); 143 | mainGroup = CF2B73461EAE8A7E009056D2; 144 | productRefGroup = CF2B73501EAE8A7E009056D2 /* Products */; 145 | projectDirPath = ""; 146 | projectRoot = ""; 147 | targets = ( 148 | CF2B734E1EAE8A7E009056D2 /* LUAutocompleteViewExample */, 149 | ); 150 | }; 151 | /* End PBXProject section */ 152 | 153 | /* Begin PBXResourcesBuildPhase section */ 154 | CF2B734D1EAE8A7E009056D2 /* Resources */ = { 155 | isa = PBXResourcesBuildPhase; 156 | buildActionMask = 2147483647; 157 | files = ( 158 | CF2B735D1EAE8A7E009056D2 /* LaunchScreen.storyboard in Resources */, 159 | CF2B735A1EAE8A7E009056D2 /* Assets.xcassets in Resources */, 160 | CF2B73581EAE8A7E009056D2 /* Main.storyboard in Resources */, 161 | ); 162 | runOnlyForDeploymentPostprocessing = 0; 163 | }; 164 | /* End PBXResourcesBuildPhase section */ 165 | 166 | /* Begin PBXShellScriptBuildPhase section */ 167 | 6BF85B7D76F3C6B405ED1367 /* [CP] Embed Pods Frameworks */ = { 168 | isa = PBXShellScriptBuildPhase; 169 | buildActionMask = 2147483647; 170 | files = ( 171 | ); 172 | inputFileListPaths = ( 173 | "${PODS_ROOT}/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", 174 | ); 175 | name = "[CP] Embed Pods Frameworks"; 176 | outputFileListPaths = ( 177 | "${PODS_ROOT}/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", 178 | ); 179 | runOnlyForDeploymentPostprocessing = 0; 180 | shellPath = /bin/sh; 181 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks.sh\"\n"; 182 | showEnvVarsInLog = 0; 183 | }; 184 | AA905CB548A1D8BDBE27CB62 /* [CP] Check Pods Manifest.lock */ = { 185 | isa = PBXShellScriptBuildPhase; 186 | buildActionMask = 2147483647; 187 | files = ( 188 | ); 189 | inputFileListPaths = ( 190 | ); 191 | inputPaths = ( 192 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 193 | "${PODS_ROOT}/Manifest.lock", 194 | ); 195 | name = "[CP] Check Pods Manifest.lock"; 196 | outputFileListPaths = ( 197 | ); 198 | outputPaths = ( 199 | "$(DERIVED_FILE_DIR)/Pods-LUAutocompleteViewExample-checkManifestLockResult.txt", 200 | ); 201 | runOnlyForDeploymentPostprocessing = 0; 202 | shellPath = /bin/sh; 203 | 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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 204 | showEnvVarsInLog = 0; 205 | }; 206 | /* End PBXShellScriptBuildPhase section */ 207 | 208 | /* Begin PBXSourcesBuildPhase section */ 209 | CF2B734B1EAE8A7E009056D2 /* Sources */ = { 210 | isa = PBXSourcesBuildPhase; 211 | buildActionMask = 2147483647; 212 | files = ( 213 | CF9218171EAF63B300D754B0 /* CustomAutocompleteTableViewCell.swift in Sources */, 214 | CF2B73551EAE8A7E009056D2 /* ViewController.swift in Sources */, 215 | CF2B73531EAE8A7E009056D2 /* AppDelegate.swift in Sources */, 216 | ); 217 | runOnlyForDeploymentPostprocessing = 0; 218 | }; 219 | /* End PBXSourcesBuildPhase section */ 220 | 221 | /* Begin PBXVariantGroup section */ 222 | CF2B73561EAE8A7E009056D2 /* Main.storyboard */ = { 223 | isa = PBXVariantGroup; 224 | children = ( 225 | CF2B73571EAE8A7E009056D2 /* Base */, 226 | ); 227 | name = Main.storyboard; 228 | sourceTree = ""; 229 | }; 230 | CF2B735B1EAE8A7E009056D2 /* LaunchScreen.storyboard */ = { 231 | isa = PBXVariantGroup; 232 | children = ( 233 | CF2B735C1EAE8A7E009056D2 /* Base */, 234 | ); 235 | name = LaunchScreen.storyboard; 236 | sourceTree = ""; 237 | }; 238 | /* End PBXVariantGroup section */ 239 | 240 | /* Begin XCBuildConfiguration section */ 241 | CF2B735F1EAE8A7E009056D2 /* Debug */ = { 242 | isa = XCBuildConfiguration; 243 | buildSettings = { 244 | ALWAYS_SEARCH_USER_PATHS = NO; 245 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 246 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 247 | CLANG_ANALYZER_NONNULL = YES; 248 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 249 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 250 | CLANG_CXX_LIBRARY = "libc++"; 251 | CLANG_ENABLE_MODULES = YES; 252 | CLANG_ENABLE_OBJC_ARC = YES; 253 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 254 | CLANG_WARN_BOOL_CONVERSION = YES; 255 | CLANG_WARN_COMMA = YES; 256 | CLANG_WARN_CONSTANT_CONVERSION = YES; 257 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 258 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 259 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 260 | CLANG_WARN_EMPTY_BODY = YES; 261 | CLANG_WARN_ENUM_CONVERSION = YES; 262 | CLANG_WARN_INFINITE_RECURSION = YES; 263 | CLANG_WARN_INT_CONVERSION = YES; 264 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 265 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 266 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 267 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 268 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 269 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 270 | CLANG_WARN_STRICT_PROTOTYPES = YES; 271 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 272 | CLANG_WARN_UNREACHABLE_CODE = YES; 273 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 274 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 275 | COPY_PHASE_STRIP = NO; 276 | DEBUG_INFORMATION_FORMAT = dwarf; 277 | ENABLE_STRICT_OBJC_MSGSEND = YES; 278 | ENABLE_TESTABILITY = YES; 279 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 280 | GCC_C_LANGUAGE_STANDARD = gnu99; 281 | GCC_DYNAMIC_NO_PIC = NO; 282 | GCC_NO_COMMON_BLOCKS = YES; 283 | GCC_OPTIMIZATION_LEVEL = 0; 284 | GCC_PREPROCESSOR_DEFINITIONS = ( 285 | "DEBUG=1", 286 | "$(inherited)", 287 | ); 288 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 289 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 290 | GCC_WARN_UNDECLARED_SELECTOR = YES; 291 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 292 | GCC_WARN_UNUSED_FUNCTION = YES; 293 | GCC_WARN_UNUSED_VARIABLE = YES; 294 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 295 | MTL_ENABLE_DEBUG_INFO = YES; 296 | ONLY_ACTIVE_ARCH = YES; 297 | SDKROOT = iphoneos; 298 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 299 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 300 | SWIFT_VERSION = 4.2; 301 | TARGETED_DEVICE_FAMILY = "1,2"; 302 | }; 303 | name = Debug; 304 | }; 305 | CF2B73601EAE8A7E009056D2 /* Release */ = { 306 | isa = XCBuildConfiguration; 307 | buildSettings = { 308 | ALWAYS_SEARCH_USER_PATHS = NO; 309 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 310 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 311 | CLANG_ANALYZER_NONNULL = YES; 312 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 313 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 314 | CLANG_CXX_LIBRARY = "libc++"; 315 | CLANG_ENABLE_MODULES = YES; 316 | CLANG_ENABLE_OBJC_ARC = YES; 317 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 318 | CLANG_WARN_BOOL_CONVERSION = YES; 319 | CLANG_WARN_COMMA = YES; 320 | CLANG_WARN_CONSTANT_CONVERSION = YES; 321 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 322 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 323 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 324 | CLANG_WARN_EMPTY_BODY = YES; 325 | CLANG_WARN_ENUM_CONVERSION = YES; 326 | CLANG_WARN_INFINITE_RECURSION = YES; 327 | CLANG_WARN_INT_CONVERSION = YES; 328 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 329 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 330 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 331 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 332 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 334 | CLANG_WARN_STRICT_PROTOTYPES = YES; 335 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 336 | CLANG_WARN_UNREACHABLE_CODE = YES; 337 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 338 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 339 | COPY_PHASE_STRIP = NO; 340 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 341 | ENABLE_NS_ASSERTIONS = NO; 342 | ENABLE_STRICT_OBJC_MSGSEND = YES; 343 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 344 | GCC_C_LANGUAGE_STANDARD = gnu99; 345 | GCC_NO_COMMON_BLOCKS = YES; 346 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 347 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 348 | GCC_WARN_UNDECLARED_SELECTOR = YES; 349 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 350 | GCC_WARN_UNUSED_FUNCTION = YES; 351 | GCC_WARN_UNUSED_VARIABLE = YES; 352 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 353 | MTL_ENABLE_DEBUG_INFO = NO; 354 | SDKROOT = iphoneos; 355 | SWIFT_COMPILATION_MODE = wholemodule; 356 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 357 | SWIFT_VERSION = 4.2; 358 | TARGETED_DEVICE_FAMILY = "1,2"; 359 | VALIDATE_PRODUCT = YES; 360 | }; 361 | name = Release; 362 | }; 363 | CF2B73621EAE8A7E009056D2 /* Debug */ = { 364 | isa = XCBuildConfiguration; 365 | baseConfigurationReference = 20BE2DE0E155D4CF2C477078 /* Pods-LUAutocompleteViewExample.debug.xcconfig */; 366 | buildSettings = { 367 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 368 | DEVELOPMENT_TEAM = ""; 369 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 370 | INFOPLIST_FILE = LUAutocompleteViewExample/Info.plist; 371 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 372 | LD_RUNPATH_SEARCH_PATHS = ( 373 | "$(inherited)", 374 | "@executable_path/Frameworks", 375 | ); 376 | OTHER_LDFLAGS = "$(inherited)"; 377 | PRODUCT_BUNDLE_IDENTIFIER = LU.LUAutocompleteViewExample; 378 | PRODUCT_NAME = "$(TARGET_NAME)"; 379 | SWIFT_VERSION = 5.0; 380 | }; 381 | name = Debug; 382 | }; 383 | CF2B73631EAE8A7E009056D2 /* Release */ = { 384 | isa = XCBuildConfiguration; 385 | baseConfigurationReference = D9E51CCCBD3A5F6C4B93C781 /* Pods-LUAutocompleteViewExample.release.xcconfig */; 386 | buildSettings = { 387 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 388 | DEVELOPMENT_TEAM = ""; 389 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 390 | INFOPLIST_FILE = LUAutocompleteViewExample/Info.plist; 391 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 392 | LD_RUNPATH_SEARCH_PATHS = ( 393 | "$(inherited)", 394 | "@executable_path/Frameworks", 395 | ); 396 | OTHER_LDFLAGS = "$(inherited)"; 397 | PRODUCT_BUNDLE_IDENTIFIER = LU.LUAutocompleteViewExample; 398 | PRODUCT_NAME = "$(TARGET_NAME)"; 399 | SWIFT_VERSION = 5.0; 400 | }; 401 | name = Release; 402 | }; 403 | /* End XCBuildConfiguration section */ 404 | 405 | /* Begin XCConfigurationList section */ 406 | CF2B734A1EAE8A7E009056D2 /* Build configuration list for PBXProject "LUAutocompleteViewExample" */ = { 407 | isa = XCConfigurationList; 408 | buildConfigurations = ( 409 | CF2B735F1EAE8A7E009056D2 /* Debug */, 410 | CF2B73601EAE8A7E009056D2 /* Release */, 411 | ); 412 | defaultConfigurationIsVisible = 0; 413 | defaultConfigurationName = Release; 414 | }; 415 | CF2B73611EAE8A7E009056D2 /* Build configuration list for PBXNativeTarget "LUAutocompleteViewExample" */ = { 416 | isa = XCConfigurationList; 417 | buildConfigurations = ( 418 | CF2B73621EAE8A7E009056D2 /* Debug */, 419 | CF2B73631EAE8A7E009056D2 /* Release */, 420 | ); 421 | defaultConfigurationIsVisible = 0; 422 | defaultConfigurationName = Release; 423 | }; 424 | /* End XCConfigurationList section */ 425 | }; 426 | rootObject = CF2B73471EAE8A7E009056D2 /* Project object */; 427 | } 428 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample.xcodeproj/xcshareddata/xcschemes/LUAutocompleteViewExample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 52 | 54 | 60 | 61 | 62 | 63 | 67 | 68 | 69 | 70 | 76 | 78 | 84 | 85 | 86 | 87 | 89 | 90 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // LUAutocompleteViewExample 4 | // 5 | // Created by Laurentiu Ungur on 24/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // 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. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // 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. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // 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. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icon.png", 5 | "idiom" : "universal", 6 | "platform" : "ios", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/Assets.xcassets/AppIcon.appiconset/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LaurentiuUngur/LUAutocompleteView/4d7052a058a46bfce6711a8475ca1da576230a1b/LUAutocompleteViewExample/LUAutocompleteViewExample/Assets.xcassets/AppIcon.appiconset/icon.png -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/Base.lproj/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 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/CustomAutocompleteTableViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CustomAutocompleteTableViewCell.swift 3 | // LUAutocompleteViewExample 4 | // 5 | // Created by Laurentiu Ungur on 25/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import LUAutocompleteView 11 | 12 | final class CustomAutocompleteTableViewCell: LUAutocompleteTableViewCell { 13 | // MARK: - Base Class Overrides 14 | 15 | override func set(text: String) { 16 | textLabel?.text = text 17 | textLabel?.textColor = .red 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/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 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationLandscapeLeft 34 | UIInterfaceOrientationLandscapeRight 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationPortraitUpsideDown 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/LUAutocompleteViewExample/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // LUAutocompleteViewExample 4 | // 5 | // Created by Laurentiu Ungur on 24/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import LUAutocompleteView 11 | 12 | final class ViewController: UIViewController { 13 | // MARK: - Properties 14 | 15 | @IBOutlet weak var textField: UITextField! 16 | private let autocompleteView = LUAutocompleteView() 17 | 18 | private let elements = (1...100).map { "\($0)" } 19 | 20 | // MARK: - ViewController 21 | 22 | override func viewDidLoad() { 23 | super.viewDidLoad() 24 | 25 | view.addSubview(autocompleteView) 26 | 27 | autocompleteView.textField = textField 28 | autocompleteView.dataSource = self 29 | autocompleteView.delegate = self 30 | 31 | // Customisation 32 | 33 | autocompleteView.rowHeight = 45 34 | //autocompleteView.autocompleteCell = CustomAutocompleteTableViewCell.self // Uncomment this line in order to use customised autocomplete cell 35 | } 36 | } 37 | 38 | // MARK: - LUAutocompleteViewDataSource 39 | 40 | extension ViewController: LUAutocompleteViewDataSource { 41 | func autocompleteView(_ autocompleteView: LUAutocompleteView, elementsFor text: String, completion: @escaping ([String]) -> Void) { 42 | let elementsThatMatchInput = elements.filter { $0.lowercased().contains(text.lowercased()) } 43 | completion(elementsThatMatchInput) 44 | } 45 | } 46 | 47 | // MARK: - LUAutocompleteViewDelegate 48 | 49 | extension ViewController: LUAutocompleteViewDelegate { 50 | func autocompleteView(_ autocompleteView: LUAutocompleteView, didSelect text: String) { 51 | print(text + " was selected from autocomplete view") 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | platform :ios, '13.0' 3 | 4 | use_frameworks! 5 | inhibit_all_warnings! 6 | 7 | target :LUAutocompleteViewExample do 8 | pod 'LUAutocompleteView', :path => '../' 9 | 10 | end 11 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LUAutocompleteView (5.0.0) 3 | 4 | DEPENDENCIES: 5 | - LUAutocompleteView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | LUAutocompleteView: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | LUAutocompleteView: 21168e5c0dbc9a221ae3954e2290356952d5223c 13 | 14 | PODFILE CHECKSUM: 149885d1c14c9ba2b87f02070b097c9e2d9014ad 15 | 16 | COCOAPODS: 1.13.0 17 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Local Podspecs/LUAutocompleteView.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LUAutocompleteView", 3 | "version": "5.0.0", 4 | "summary": "Highly configurable autocomplete view that is attachable to any UITextField", 5 | "description": "Easy to use and highly configurable autocomplete view that is attachable to any UITextField", 6 | "homepage": "https://github.com/LaurentiuUngur/LUAutocompleteView", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "source": { 12 | "git": "https://github.com/LaurentiuUngur/LUAutocompleteView.git", 13 | "tag": "5.0.0" 14 | }, 15 | "authors": { 16 | "Laurentiu Ungur": "laurentyu1995@gmail.com" 17 | }, 18 | "requires_arc": true, 19 | "platforms": { 20 | "ios": "13.0" 21 | }, 22 | "swift_versions": "5.9", 23 | "source_files": "Sources/*.{swift}", 24 | "preserve_paths": "README*", 25 | "swift_version": "5.9" 26 | } 27 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LUAutocompleteView (5.0.0) 3 | 4 | DEPENDENCIES: 5 | - LUAutocompleteView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | LUAutocompleteView: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | LUAutocompleteView: 21168e5c0dbc9a221ae3954e2290356952d5223c 13 | 14 | PODFILE CHECKSUM: 149885d1c14c9ba2b87f02070b097c9e2d9014ad 15 | 16 | COCOAPODS: 1.13.0 17 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 263654B6FCA3A0EA2D01C88841FAD6A5 /* LUAutocompleteViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894E3BD05B0CACD33244E9E74A03CE3F /* LUAutocompleteViewDataSource.swift */; }; 11 | 4C7D8C4F35D6E41C059E738EDE7461F6 /* LUAutocompleteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F98C9741B8A8BA2F9BDA048A3318716F /* LUAutocompleteTableViewCell.swift */; }; 12 | 5D406EF80AD23B9DC584D3AE0EA3E267 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; 13 | 9D03AE3673174B5E24A367C79D01CDE6 /* Pods-LUAutocompleteViewExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 151261A9582E5C3BD335B93EA7E4ED10 /* Pods-LUAutocompleteViewExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | AB17C0DA0338D948CABA8D260EA42CCE /* LUAutocompleteView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 133B1D5285671C1E3864B3DA878CC591 /* LUAutocompleteView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | B323D2D4F359926B0A3991741C1BA4FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; 16 | B64B55007A661046E644E464E3087645 /* LUAutocompleteViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB7557A71070282DBCA36CEF4062F16B /* LUAutocompleteViewDelegate.swift */; }; 17 | E2CAF78DD5DA726D63029166B3B3308A /* LUAutocompleteView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 04845D5C68B05D98150A49681A9FA095 /* LUAutocompleteView-dummy.m */; }; 18 | F95A5C006843BE8B012C5D88429844F5 /* Pods-LUAutocompleteViewExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 020D8A5986C9A8CC318A3090A7724FB9 /* Pods-LUAutocompleteViewExample-dummy.m */; }; 19 | FD77D5470C08E070464E6D6537DD7584 /* LUAutocompleteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B7D1BB3F1E57924D91790973F444E7 /* LUAutocompleteView.swift */; }; 20 | /* End PBXBuildFile section */ 21 | 22 | /* Begin PBXContainerItemProxy section */ 23 | 3A4DE88806A0F1C00031D2DB5F8A7F22 /* PBXContainerItemProxy */ = { 24 | isa = PBXContainerItemProxy; 25 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 26 | proxyType = 1; 27 | remoteGlobalIDString = E4C0FDBB189B4414E470E71EA230DC19; 28 | remoteInfo = LUAutocompleteView; 29 | }; 30 | /* End PBXContainerItemProxy section */ 31 | 32 | /* Begin PBXFileReference section */ 33 | 020D8A5986C9A8CC318A3090A7724FB9 /* Pods-LUAutocompleteViewExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LUAutocompleteViewExample-dummy.m"; sourceTree = ""; }; 34 | 04845D5C68B05D98150A49681A9FA095 /* LUAutocompleteView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LUAutocompleteView-dummy.m"; sourceTree = ""; }; 35 | 0BC6CB5D77B2A09286C30CB1D9248A3D /* LUAutocompleteView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LUAutocompleteView.modulemap; sourceTree = ""; }; 36 | 133B1D5285671C1E3864B3DA878CC591 /* LUAutocompleteView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LUAutocompleteView-umbrella.h"; sourceTree = ""; }; 37 | 151261A9582E5C3BD335B93EA7E4ED10 /* Pods-LUAutocompleteViewExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LUAutocompleteViewExample-umbrella.h"; sourceTree = ""; }; 38 | 28379E6529EA750845B10D607B446A03 /* Pods-LUAutocompleteViewExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LUAutocompleteViewExample.modulemap"; sourceTree = ""; }; 39 | 306C6CA1760A4A9034BEDA51059B80C2 /* Pods-LUAutocompleteViewExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LUAutocompleteViewExample-acknowledgements.markdown"; sourceTree = ""; }; 40 | 56D6E13C7A826EEB5788CC6CF29E14F0 /* LUAutocompleteView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LUAutocompleteView; path = LUAutocompleteView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 5B5E5ECCF56EE565C288D4E0014C31A4 /* Pods-LUAutocompleteViewExample */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-LUAutocompleteViewExample"; path = Pods_LUAutocompleteViewExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 68A4D5889264DF021C841E570741A02D /* Pods-LUAutocompleteViewExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LUAutocompleteViewExample-acknowledgements.plist"; sourceTree = ""; }; 43 | 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 44 | 7896C9656C443D249AA518A28D4141B6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 45 | 83B79542385090739F96B664FB209901 /* Pods-LUAutocompleteViewExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LUAutocompleteViewExample.release.xcconfig"; sourceTree = ""; }; 46 | 88B7D1BB3F1E57924D91790973F444E7 /* LUAutocompleteView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LUAutocompleteView.swift; path = Sources/LUAutocompleteView.swift; sourceTree = ""; }; 47 | 893EBDE7BB40E9DD5FE605979E215AA4 /* LUAutocompleteView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LUAutocompleteView.debug.xcconfig; sourceTree = ""; }; 48 | 894E3BD05B0CACD33244E9E74A03CE3F /* LUAutocompleteViewDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LUAutocompleteViewDataSource.swift; path = Sources/LUAutocompleteViewDataSource.swift; sourceTree = ""; }; 49 | 95C248512E2C866654F66C29293DCEEC /* LUAutocompleteView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LUAutocompleteView-prefix.pch"; sourceTree = ""; }; 50 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 51 | CB952C765BD51537D98F035AE83C1182 /* LUAutocompleteView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = LUAutocompleteView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 52 | DA0ED6FF4CEA7BF141D0D031B9C509A4 /* Pods-LUAutocompleteViewExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LUAutocompleteViewExample-frameworks.sh"; sourceTree = ""; }; 53 | DB8BB8DC41E8D3AF156F6669754EE782 /* LUAutocompleteView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LUAutocompleteView.release.xcconfig; sourceTree = ""; }; 54 | EDFEC4E0B6D2D9DAFA57EBA756F4C5FD /* LUAutocompleteView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LUAutocompleteView-Info.plist"; sourceTree = ""; }; 55 | F0596219B5CD39090060223FB6AFAE56 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 56 | F2956BAD98FE1047B37AF6DF64C840B2 /* Pods-LUAutocompleteViewExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LUAutocompleteViewExample.debug.xcconfig"; sourceTree = ""; }; 57 | F7284DDD15700D174D493E387DE876D6 /* Pods-LUAutocompleteViewExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LUAutocompleteViewExample-Info.plist"; sourceTree = ""; }; 58 | F98C9741B8A8BA2F9BDA048A3318716F /* LUAutocompleteTableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LUAutocompleteTableViewCell.swift; path = Sources/LUAutocompleteTableViewCell.swift; sourceTree = ""; }; 59 | FB7557A71070282DBCA36CEF4062F16B /* LUAutocompleteViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LUAutocompleteViewDelegate.swift; path = Sources/LUAutocompleteViewDelegate.swift; sourceTree = ""; }; 60 | /* End PBXFileReference section */ 61 | 62 | /* Begin PBXFrameworksBuildPhase section */ 63 | 70F98F89C2BE1A724536B6C52A3DAF20 /* Frameworks */ = { 64 | isa = PBXFrameworksBuildPhase; 65 | buildActionMask = 2147483647; 66 | files = ( 67 | B323D2D4F359926B0A3991741C1BA4FE /* Foundation.framework in Frameworks */, 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | 9D1CFE593965ECD0BD72C661EB560630 /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | 5D406EF80AD23B9DC584D3AE0EA3E267 /* Foundation.framework in Frameworks */, 76 | ); 77 | runOnlyForDeploymentPostprocessing = 0; 78 | }; 79 | /* End PBXFrameworksBuildPhase section */ 80 | 81 | /* Begin PBXGroup section */ 82 | 15A2CDEEAC5D334EACF532691B44AF81 /* Products */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | 56D6E13C7A826EEB5788CC6CF29E14F0 /* LUAutocompleteView */, 86 | 5B5E5ECCF56EE565C288D4E0014C31A4 /* Pods-LUAutocompleteViewExample */, 87 | ); 88 | name = Products; 89 | sourceTree = ""; 90 | }; 91 | 1EA3DEEF967D2BE0C989839EA9668568 /* Support Files */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 0BC6CB5D77B2A09286C30CB1D9248A3D /* LUAutocompleteView.modulemap */, 95 | 04845D5C68B05D98150A49681A9FA095 /* LUAutocompleteView-dummy.m */, 96 | EDFEC4E0B6D2D9DAFA57EBA756F4C5FD /* LUAutocompleteView-Info.plist */, 97 | 95C248512E2C866654F66C29293DCEEC /* LUAutocompleteView-prefix.pch */, 98 | 133B1D5285671C1E3864B3DA878CC591 /* LUAutocompleteView-umbrella.h */, 99 | 893EBDE7BB40E9DD5FE605979E215AA4 /* LUAutocompleteView.debug.xcconfig */, 100 | DB8BB8DC41E8D3AF156F6669754EE782 /* LUAutocompleteView.release.xcconfig */, 101 | ); 102 | name = "Support Files"; 103 | path = "LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView"; 104 | sourceTree = ""; 105 | }; 106 | 272FB5DCF88B81132D491F6A07832503 /* Pods-LUAutocompleteViewExample */ = { 107 | isa = PBXGroup; 108 | children = ( 109 | 28379E6529EA750845B10D607B446A03 /* Pods-LUAutocompleteViewExample.modulemap */, 110 | 306C6CA1760A4A9034BEDA51059B80C2 /* Pods-LUAutocompleteViewExample-acknowledgements.markdown */, 111 | 68A4D5889264DF021C841E570741A02D /* Pods-LUAutocompleteViewExample-acknowledgements.plist */, 112 | 020D8A5986C9A8CC318A3090A7724FB9 /* Pods-LUAutocompleteViewExample-dummy.m */, 113 | DA0ED6FF4CEA7BF141D0D031B9C509A4 /* Pods-LUAutocompleteViewExample-frameworks.sh */, 114 | F7284DDD15700D174D493E387DE876D6 /* Pods-LUAutocompleteViewExample-Info.plist */, 115 | 151261A9582E5C3BD335B93EA7E4ED10 /* Pods-LUAutocompleteViewExample-umbrella.h */, 116 | F2956BAD98FE1047B37AF6DF64C840B2 /* Pods-LUAutocompleteViewExample.debug.xcconfig */, 117 | 83B79542385090739F96B664FB209901 /* Pods-LUAutocompleteViewExample.release.xcconfig */, 118 | ); 119 | name = "Pods-LUAutocompleteViewExample"; 120 | path = "Target Support Files/Pods-LUAutocompleteViewExample"; 121 | sourceTree = ""; 122 | }; 123 | 2A38D7EA2DF205AA78E7AD7775C58083 /* LUAutocompleteView */ = { 124 | isa = PBXGroup; 125 | children = ( 126 | F98C9741B8A8BA2F9BDA048A3318716F /* LUAutocompleteTableViewCell.swift */, 127 | 88B7D1BB3F1E57924D91790973F444E7 /* LUAutocompleteView.swift */, 128 | 894E3BD05B0CACD33244E9E74A03CE3F /* LUAutocompleteViewDataSource.swift */, 129 | FB7557A71070282DBCA36CEF4062F16B /* LUAutocompleteViewDelegate.swift */, 130 | B7D6B9DDC873891FBF4173DBA4E6E660 /* Pod */, 131 | 1EA3DEEF967D2BE0C989839EA9668568 /* Support Files */, 132 | ); 133 | name = LUAutocompleteView; 134 | path = ../..; 135 | sourceTree = ""; 136 | }; 137 | 578452D2E740E91742655AC8F1636D1F /* iOS */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, 141 | ); 142 | name = iOS; 143 | sourceTree = ""; 144 | }; 145 | A27D82DF6167A13E962F2D2FDAD177BF /* Targets Support Files */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | 272FB5DCF88B81132D491F6A07832503 /* Pods-LUAutocompleteViewExample */, 149 | ); 150 | name = "Targets Support Files"; 151 | sourceTree = ""; 152 | }; 153 | B7D6B9DDC873891FBF4173DBA4E6E660 /* Pod */ = { 154 | isa = PBXGroup; 155 | children = ( 156 | 7896C9656C443D249AA518A28D4141B6 /* LICENSE */, 157 | CB952C765BD51537D98F035AE83C1182 /* LUAutocompleteView.podspec */, 158 | F0596219B5CD39090060223FB6AFAE56 /* README.md */, 159 | ); 160 | name = Pod; 161 | sourceTree = ""; 162 | }; 163 | CF1408CF629C7361332E53B88F7BD30C = { 164 | isa = PBXGroup; 165 | children = ( 166 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 167 | FDC1432117B696848CBE7ED957A919EE /* Development Pods */, 168 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, 169 | 15A2CDEEAC5D334EACF532691B44AF81 /* Products */, 170 | A27D82DF6167A13E962F2D2FDAD177BF /* Targets Support Files */, 171 | ); 172 | sourceTree = ""; 173 | }; 174 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | 578452D2E740E91742655AC8F1636D1F /* iOS */, 178 | ); 179 | name = Frameworks; 180 | sourceTree = ""; 181 | }; 182 | FDC1432117B696848CBE7ED957A919EE /* Development Pods */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | 2A38D7EA2DF205AA78E7AD7775C58083 /* LUAutocompleteView */, 186 | ); 187 | name = "Development Pods"; 188 | sourceTree = ""; 189 | }; 190 | /* End PBXGroup section */ 191 | 192 | /* Begin PBXHeadersBuildPhase section */ 193 | A4E576FA78230F30553720242EA98225 /* Headers */ = { 194 | isa = PBXHeadersBuildPhase; 195 | buildActionMask = 2147483647; 196 | files = ( 197 | 9D03AE3673174B5E24A367C79D01CDE6 /* Pods-LUAutocompleteViewExample-umbrella.h in Headers */, 198 | ); 199 | runOnlyForDeploymentPostprocessing = 0; 200 | }; 201 | F65951DC13370A13EFB54077F9420CF9 /* Headers */ = { 202 | isa = PBXHeadersBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | AB17C0DA0338D948CABA8D260EA42CCE /* LUAutocompleteView-umbrella.h in Headers */, 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | }; 209 | /* End PBXHeadersBuildPhase section */ 210 | 211 | /* Begin PBXNativeTarget section */ 212 | A350EB0FD68534451F44E40A89FB1B52 /* Pods-LUAutocompleteViewExample */ = { 213 | isa = PBXNativeTarget; 214 | buildConfigurationList = 8073AF0C765D38B96D0B3618435DAFA3 /* Build configuration list for PBXNativeTarget "Pods-LUAutocompleteViewExample" */; 215 | buildPhases = ( 216 | A4E576FA78230F30553720242EA98225 /* Headers */, 217 | CBECF316D90EE730626D71C62351AE7A /* Sources */, 218 | 70F98F89C2BE1A724536B6C52A3DAF20 /* Frameworks */, 219 | E879B8525163F932F5497694FE0273C1 /* Resources */, 220 | ); 221 | buildRules = ( 222 | ); 223 | dependencies = ( 224 | E7D7CA89DC93A8DD348B724C3B6CF2DB /* PBXTargetDependency */, 225 | ); 226 | name = "Pods-LUAutocompleteViewExample"; 227 | productName = Pods_LUAutocompleteViewExample; 228 | productReference = 5B5E5ECCF56EE565C288D4E0014C31A4 /* Pods-LUAutocompleteViewExample */; 229 | productType = "com.apple.product-type.framework"; 230 | }; 231 | E4C0FDBB189B4414E470E71EA230DC19 /* LUAutocompleteView */ = { 232 | isa = PBXNativeTarget; 233 | buildConfigurationList = FF029DABAC6828BBA632E013B87B42C2 /* Build configuration list for PBXNativeTarget "LUAutocompleteView" */; 234 | buildPhases = ( 235 | F65951DC13370A13EFB54077F9420CF9 /* Headers */, 236 | 2BE89B3B703CE62EF134CC186BB32F8A /* Sources */, 237 | 9D1CFE593965ECD0BD72C661EB560630 /* Frameworks */, 238 | 6E74499E33FC3CA7B50535F1FB2B87A6 /* Resources */, 239 | ); 240 | buildRules = ( 241 | ); 242 | dependencies = ( 243 | ); 244 | name = LUAutocompleteView; 245 | productName = LUAutocompleteView; 246 | productReference = 56D6E13C7A826EEB5788CC6CF29E14F0 /* LUAutocompleteView */; 247 | productType = "com.apple.product-type.framework"; 248 | }; 249 | /* End PBXNativeTarget section */ 250 | 251 | /* Begin PBXProject section */ 252 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 253 | isa = PBXProject; 254 | attributes = { 255 | LastSwiftUpdateCheck = 1500; 256 | LastUpgradeCheck = 1500; 257 | }; 258 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 259 | compatibilityVersion = "Xcode 14.0"; 260 | developmentRegion = en; 261 | hasScannedForEncodings = 0; 262 | knownRegions = ( 263 | Base, 264 | en, 265 | ); 266 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 267 | productRefGroup = 15A2CDEEAC5D334EACF532691B44AF81 /* Products */; 268 | projectDirPath = ""; 269 | projectRoot = ""; 270 | targets = ( 271 | E4C0FDBB189B4414E470E71EA230DC19 /* LUAutocompleteView */, 272 | A350EB0FD68534451F44E40A89FB1B52 /* Pods-LUAutocompleteViewExample */, 273 | ); 274 | }; 275 | /* End PBXProject section */ 276 | 277 | /* Begin PBXResourcesBuildPhase section */ 278 | 6E74499E33FC3CA7B50535F1FB2B87A6 /* Resources */ = { 279 | isa = PBXResourcesBuildPhase; 280 | buildActionMask = 2147483647; 281 | files = ( 282 | ); 283 | runOnlyForDeploymentPostprocessing = 0; 284 | }; 285 | E879B8525163F932F5497694FE0273C1 /* Resources */ = { 286 | isa = PBXResourcesBuildPhase; 287 | buildActionMask = 2147483647; 288 | files = ( 289 | ); 290 | runOnlyForDeploymentPostprocessing = 0; 291 | }; 292 | /* End PBXResourcesBuildPhase section */ 293 | 294 | /* Begin PBXSourcesBuildPhase section */ 295 | 2BE89B3B703CE62EF134CC186BB32F8A /* Sources */ = { 296 | isa = PBXSourcesBuildPhase; 297 | buildActionMask = 2147483647; 298 | files = ( 299 | 4C7D8C4F35D6E41C059E738EDE7461F6 /* LUAutocompleteTableViewCell.swift in Sources */, 300 | FD77D5470C08E070464E6D6537DD7584 /* LUAutocompleteView.swift in Sources */, 301 | E2CAF78DD5DA726D63029166B3B3308A /* LUAutocompleteView-dummy.m in Sources */, 302 | 263654B6FCA3A0EA2D01C88841FAD6A5 /* LUAutocompleteViewDataSource.swift in Sources */, 303 | B64B55007A661046E644E464E3087645 /* LUAutocompleteViewDelegate.swift in Sources */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | CBECF316D90EE730626D71C62351AE7A /* Sources */ = { 308 | isa = PBXSourcesBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | F95A5C006843BE8B012C5D88429844F5 /* Pods-LUAutocompleteViewExample-dummy.m in Sources */, 312 | ); 313 | runOnlyForDeploymentPostprocessing = 0; 314 | }; 315 | /* End PBXSourcesBuildPhase section */ 316 | 317 | /* Begin PBXTargetDependency section */ 318 | E7D7CA89DC93A8DD348B724C3B6CF2DB /* PBXTargetDependency */ = { 319 | isa = PBXTargetDependency; 320 | name = LUAutocompleteView; 321 | target = E4C0FDBB189B4414E470E71EA230DC19 /* LUAutocompleteView */; 322 | targetProxy = 3A4DE88806A0F1C00031D2DB5F8A7F22 /* PBXContainerItemProxy */; 323 | }; 324 | /* End PBXTargetDependency section */ 325 | 326 | /* Begin XCBuildConfiguration section */ 327 | 392F5D5B185C6A5AD3800BD8FC18D5BF /* Release */ = { 328 | isa = XCBuildConfiguration; 329 | baseConfigurationReference = DB8BB8DC41E8D3AF156F6669754EE782 /* LUAutocompleteView.release.xcconfig */; 330 | buildSettings = { 331 | CLANG_ENABLE_OBJC_WEAK = NO; 332 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 333 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 334 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 335 | CURRENT_PROJECT_VERSION = 1; 336 | DEFINES_MODULE = YES; 337 | DYLIB_COMPATIBILITY_VERSION = 1; 338 | DYLIB_CURRENT_VERSION = 1; 339 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 340 | GCC_PREFIX_HEADER = "Target Support Files/LUAutocompleteView/LUAutocompleteView-prefix.pch"; 341 | INFOPLIST_FILE = "Target Support Files/LUAutocompleteView/LUAutocompleteView-Info.plist"; 342 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 343 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 344 | LD_RUNPATH_SEARCH_PATHS = ( 345 | "$(inherited)", 346 | "@executable_path/Frameworks", 347 | "@loader_path/Frameworks", 348 | ); 349 | MODULEMAP_FILE = "Target Support Files/LUAutocompleteView/LUAutocompleteView.modulemap"; 350 | PRODUCT_MODULE_NAME = LUAutocompleteView; 351 | PRODUCT_NAME = LUAutocompleteView; 352 | SDKROOT = iphoneos; 353 | SKIP_INSTALL = YES; 354 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 355 | SWIFT_VERSION = 5.9; 356 | TARGETED_DEVICE_FAMILY = "1,2"; 357 | VALIDATE_PRODUCT = YES; 358 | VERSIONING_SYSTEM = "apple-generic"; 359 | VERSION_INFO_PREFIX = ""; 360 | }; 361 | name = Release; 362 | }; 363 | 3BAF6B1F22950ADD95B70CFAC31FD4F7 /* Release */ = { 364 | isa = XCBuildConfiguration; 365 | baseConfigurationReference = 83B79542385090739F96B664FB209901 /* Pods-LUAutocompleteViewExample.release.xcconfig */; 366 | buildSettings = { 367 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 368 | CLANG_ENABLE_OBJC_WEAK = NO; 369 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 370 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 371 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 372 | CURRENT_PROJECT_VERSION = 1; 373 | DEFINES_MODULE = YES; 374 | DYLIB_COMPATIBILITY_VERSION = 1; 375 | DYLIB_CURRENT_VERSION = 1; 376 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 377 | INFOPLIST_FILE = "Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-Info.plist"; 378 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 379 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 380 | LD_RUNPATH_SEARCH_PATHS = ( 381 | "$(inherited)", 382 | "@executable_path/Frameworks", 383 | "@loader_path/Frameworks", 384 | ); 385 | MACH_O_TYPE = staticlib; 386 | MODULEMAP_FILE = "Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.modulemap"; 387 | OTHER_LDFLAGS = ""; 388 | OTHER_LIBTOOLFLAGS = ""; 389 | PODS_ROOT = "$(SRCROOT)"; 390 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 391 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 392 | SDKROOT = iphoneos; 393 | SKIP_INSTALL = YES; 394 | TARGETED_DEVICE_FAMILY = "1,2"; 395 | VALIDATE_PRODUCT = YES; 396 | VERSIONING_SYSTEM = "apple-generic"; 397 | VERSION_INFO_PREFIX = ""; 398 | }; 399 | name = Release; 400 | }; 401 | 78B5930782CB5FB63553FD08126B163C /* Debug */ = { 402 | isa = XCBuildConfiguration; 403 | baseConfigurationReference = F2956BAD98FE1047B37AF6DF64C840B2 /* Pods-LUAutocompleteViewExample.debug.xcconfig */; 404 | buildSettings = { 405 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 406 | CLANG_ENABLE_OBJC_WEAK = NO; 407 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 408 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 409 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 410 | CURRENT_PROJECT_VERSION = 1; 411 | DEFINES_MODULE = YES; 412 | DYLIB_COMPATIBILITY_VERSION = 1; 413 | DYLIB_CURRENT_VERSION = 1; 414 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 415 | INFOPLIST_FILE = "Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-Info.plist"; 416 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 417 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 418 | LD_RUNPATH_SEARCH_PATHS = ( 419 | "$(inherited)", 420 | "@executable_path/Frameworks", 421 | "@loader_path/Frameworks", 422 | ); 423 | MACH_O_TYPE = staticlib; 424 | MODULEMAP_FILE = "Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.modulemap"; 425 | OTHER_LDFLAGS = ""; 426 | OTHER_LIBTOOLFLAGS = ""; 427 | PODS_ROOT = "$(SRCROOT)"; 428 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 429 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 430 | SDKROOT = iphoneos; 431 | SKIP_INSTALL = YES; 432 | TARGETED_DEVICE_FAMILY = "1,2"; 433 | VERSIONING_SYSTEM = "apple-generic"; 434 | VERSION_INFO_PREFIX = ""; 435 | }; 436 | name = Debug; 437 | }; 438 | 8BB41FC7A012A06E7E0E9DE195B08A76 /* Debug */ = { 439 | isa = XCBuildConfiguration; 440 | baseConfigurationReference = 893EBDE7BB40E9DD5FE605979E215AA4 /* LUAutocompleteView.debug.xcconfig */; 441 | buildSettings = { 442 | CLANG_ENABLE_OBJC_WEAK = NO; 443 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 444 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 445 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 446 | CURRENT_PROJECT_VERSION = 1; 447 | DEFINES_MODULE = YES; 448 | DYLIB_COMPATIBILITY_VERSION = 1; 449 | DYLIB_CURRENT_VERSION = 1; 450 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 451 | GCC_PREFIX_HEADER = "Target Support Files/LUAutocompleteView/LUAutocompleteView-prefix.pch"; 452 | INFOPLIST_FILE = "Target Support Files/LUAutocompleteView/LUAutocompleteView-Info.plist"; 453 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 454 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 455 | LD_RUNPATH_SEARCH_PATHS = ( 456 | "$(inherited)", 457 | "@executable_path/Frameworks", 458 | "@loader_path/Frameworks", 459 | ); 460 | MODULEMAP_FILE = "Target Support Files/LUAutocompleteView/LUAutocompleteView.modulemap"; 461 | PRODUCT_MODULE_NAME = LUAutocompleteView; 462 | PRODUCT_NAME = LUAutocompleteView; 463 | SDKROOT = iphoneos; 464 | SKIP_INSTALL = YES; 465 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 466 | SWIFT_VERSION = 5.9; 467 | TARGETED_DEVICE_FAMILY = "1,2"; 468 | VERSIONING_SYSTEM = "apple-generic"; 469 | VERSION_INFO_PREFIX = ""; 470 | }; 471 | name = Debug; 472 | }; 473 | 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { 474 | isa = XCBuildConfiguration; 475 | buildSettings = { 476 | ALWAYS_SEARCH_USER_PATHS = NO; 477 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 478 | CLANG_ANALYZER_NONNULL = YES; 479 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 480 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 481 | CLANG_CXX_LIBRARY = "libc++"; 482 | CLANG_ENABLE_MODULES = YES; 483 | CLANG_ENABLE_OBJC_ARC = YES; 484 | CLANG_ENABLE_OBJC_WEAK = YES; 485 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 486 | CLANG_WARN_BOOL_CONVERSION = YES; 487 | CLANG_WARN_COMMA = YES; 488 | CLANG_WARN_CONSTANT_CONVERSION = YES; 489 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 490 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 491 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 492 | CLANG_WARN_EMPTY_BODY = YES; 493 | CLANG_WARN_ENUM_CONVERSION = YES; 494 | CLANG_WARN_INFINITE_RECURSION = YES; 495 | CLANG_WARN_INT_CONVERSION = YES; 496 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 497 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 498 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 499 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 500 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 501 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 502 | CLANG_WARN_STRICT_PROTOTYPES = YES; 503 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 504 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 505 | CLANG_WARN_UNREACHABLE_CODE = YES; 506 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 507 | COPY_PHASE_STRIP = NO; 508 | DEBUG_INFORMATION_FORMAT = dwarf; 509 | ENABLE_STRICT_OBJC_MSGSEND = YES; 510 | ENABLE_TESTABILITY = YES; 511 | GCC_C_LANGUAGE_STANDARD = gnu11; 512 | GCC_DYNAMIC_NO_PIC = NO; 513 | GCC_NO_COMMON_BLOCKS = YES; 514 | GCC_OPTIMIZATION_LEVEL = 0; 515 | GCC_PREPROCESSOR_DEFINITIONS = ( 516 | "POD_CONFIGURATION_DEBUG=1", 517 | "DEBUG=1", 518 | "$(inherited)", 519 | ); 520 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 521 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 522 | GCC_WARN_UNDECLARED_SELECTOR = YES; 523 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 524 | GCC_WARN_UNUSED_FUNCTION = YES; 525 | GCC_WARN_UNUSED_VARIABLE = YES; 526 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 527 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 528 | MTL_FAST_MATH = YES; 529 | ONLY_ACTIVE_ARCH = YES; 530 | PRODUCT_NAME = "$(TARGET_NAME)"; 531 | STRIP_INSTALLED_PRODUCT = NO; 532 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 533 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 534 | SWIFT_VERSION = 5.0; 535 | SYMROOT = "${SRCROOT}/../build"; 536 | }; 537 | name = Debug; 538 | }; 539 | 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { 540 | isa = XCBuildConfiguration; 541 | buildSettings = { 542 | ALWAYS_SEARCH_USER_PATHS = NO; 543 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 544 | CLANG_ANALYZER_NONNULL = YES; 545 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 546 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 547 | CLANG_CXX_LIBRARY = "libc++"; 548 | CLANG_ENABLE_MODULES = YES; 549 | CLANG_ENABLE_OBJC_ARC = YES; 550 | CLANG_ENABLE_OBJC_WEAK = YES; 551 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 552 | CLANG_WARN_BOOL_CONVERSION = YES; 553 | CLANG_WARN_COMMA = YES; 554 | CLANG_WARN_CONSTANT_CONVERSION = YES; 555 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 556 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 557 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 558 | CLANG_WARN_EMPTY_BODY = YES; 559 | CLANG_WARN_ENUM_CONVERSION = YES; 560 | CLANG_WARN_INFINITE_RECURSION = YES; 561 | CLANG_WARN_INT_CONVERSION = YES; 562 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 563 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 564 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 565 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 566 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 567 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 568 | CLANG_WARN_STRICT_PROTOTYPES = YES; 569 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 570 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 571 | CLANG_WARN_UNREACHABLE_CODE = YES; 572 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 573 | COPY_PHASE_STRIP = NO; 574 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 575 | ENABLE_NS_ASSERTIONS = NO; 576 | ENABLE_STRICT_OBJC_MSGSEND = YES; 577 | GCC_C_LANGUAGE_STANDARD = gnu11; 578 | GCC_NO_COMMON_BLOCKS = YES; 579 | GCC_PREPROCESSOR_DEFINITIONS = ( 580 | "POD_CONFIGURATION_RELEASE=1", 581 | "$(inherited)", 582 | ); 583 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 584 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 585 | GCC_WARN_UNDECLARED_SELECTOR = YES; 586 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 587 | GCC_WARN_UNUSED_FUNCTION = YES; 588 | GCC_WARN_UNUSED_VARIABLE = YES; 589 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 590 | MTL_ENABLE_DEBUG_INFO = NO; 591 | MTL_FAST_MATH = YES; 592 | PRODUCT_NAME = "$(TARGET_NAME)"; 593 | STRIP_INSTALLED_PRODUCT = NO; 594 | SWIFT_COMPILATION_MODE = wholemodule; 595 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 596 | SWIFT_VERSION = 5.0; 597 | SYMROOT = "${SRCROOT}/../build"; 598 | }; 599 | name = Release; 600 | }; 601 | /* End XCBuildConfiguration section */ 602 | 603 | /* Begin XCConfigurationList section */ 604 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 605 | isa = XCConfigurationList; 606 | buildConfigurations = ( 607 | 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */, 608 | 9E406C6AAF85E580207CD97B0044DEAB /* Release */, 609 | ); 610 | defaultConfigurationIsVisible = 0; 611 | defaultConfigurationName = Release; 612 | }; 613 | 8073AF0C765D38B96D0B3618435DAFA3 /* Build configuration list for PBXNativeTarget "Pods-LUAutocompleteViewExample" */ = { 614 | isa = XCConfigurationList; 615 | buildConfigurations = ( 616 | 78B5930782CB5FB63553FD08126B163C /* Debug */, 617 | 3BAF6B1F22950ADD95B70CFAC31FD4F7 /* Release */, 618 | ); 619 | defaultConfigurationIsVisible = 0; 620 | defaultConfigurationName = Release; 621 | }; 622 | FF029DABAC6828BBA632E013B87B42C2 /* Build configuration list for PBXNativeTarget "LUAutocompleteView" */ = { 623 | isa = XCConfigurationList; 624 | buildConfigurations = ( 625 | 8BB41FC7A012A06E7E0E9DE195B08A76 /* Debug */, 626 | 392F5D5B185C6A5AD3800BD8FC18D5BF /* Release */, 627 | ); 628 | defaultConfigurationIsVisible = 0; 629 | defaultConfigurationName = Release; 630 | }; 631 | /* End XCConfigurationList section */ 632 | }; 633 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 634 | } 635 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 5.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_LUAutocompleteView : NSObject 3 | @end 4 | @implementation PodsDummy_LUAutocompleteView 5 | @end 6 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView-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 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView-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 LUAutocompleteViewVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char LUAutocompleteViewVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 5 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView.modulemap: -------------------------------------------------------------------------------- 1 | framework module LUAutocompleteView { 2 | umbrella header "LUAutocompleteView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/LUAutocompleteView/LUAutocompleteView.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 5 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## LUAutocompleteView 5 | 6 | MIT License 7 | 8 | Copyright (c) 2023 Laurentiu 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | 28 | Generated by CocoaPods - https://cocoapods.org 29 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-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 | MIT License 18 | 19 | Copyright (c) 2023 Laurentiu 20 | 21 | Permission is hereby granted, free of charge, to any person obtaining a copy 22 | of this software and associated documentation files (the "Software"), to deal 23 | in the Software without restriction, including without limitation the rights 24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 25 | copies of the Software, and to permit persons to whom the Software is 26 | furnished to do so, subject to the following conditions: 27 | 28 | The above copyright notice and this permission notice shall be included in all 29 | copies or substantial portions of the Software. 30 | 31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 37 | SOFTWARE. 38 | 39 | License 40 | MIT 41 | Title 42 | LUAutocompleteView 43 | Type 44 | PSGroupSpecifier 45 | 46 | 47 | FooterText 48 | Generated by CocoaPods - https://cocoapods.org 49 | Title 50 | 51 | Type 52 | PSGroupSpecifier 53 | 54 | 55 | StringsTable 56 | Acknowledgements 57 | Title 58 | Acknowledgements 59 | 60 | 61 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_LUAutocompleteViewExample : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_LUAutocompleteViewExample 5 | @end 6 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks-Debug-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/LUAutocompleteView/LUAutocompleteView.framework -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks-Debug-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LUAutocompleteView.framework -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks-Release-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/LUAutocompleteView/LUAutocompleteView.framework -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks-Release-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LUAutocompleteView.framework -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | BCSYMBOLMAP_DIR="BCSymbolMaps" 23 | 24 | 25 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 26 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 27 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 28 | 29 | # Copies and strips a vendored framework 30 | install_framework() 31 | { 32 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 33 | local source="${BUILT_PRODUCTS_DIR}/$1" 34 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 35 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 36 | elif [ -r "$1" ]; then 37 | local source="$1" 38 | fi 39 | 40 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 41 | 42 | if [ -L "${source}" ]; then 43 | echo "Symlinked..." 44 | source="$(readlink -f "${source}")" 45 | fi 46 | 47 | if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then 48 | # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied 49 | find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do 50 | echo "Installing $f" 51 | install_bcsymbolmap "$f" "$destination" 52 | rm "$f" 53 | done 54 | rmdir "${source}/${BCSYMBOLMAP_DIR}" 55 | fi 56 | 57 | # Use filter instead of exclude so missing patterns don't throw errors. 58 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 59 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 60 | 61 | local basename 62 | basename="$(basename -s .framework "$1")" 63 | binary="${destination}/${basename}.framework/${basename}" 64 | 65 | if ! [ -r "$binary" ]; then 66 | binary="${destination}/${basename}" 67 | elif [ -L "${binary}" ]; then 68 | echo "Destination binary is symlinked..." 69 | dirname="$(dirname "${binary}")" 70 | binary="${dirname}/$(readlink "${binary}")" 71 | fi 72 | 73 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 74 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 75 | strip_invalid_archs "$binary" 76 | fi 77 | 78 | # Resign the code if required by the build settings to avoid unstable apps 79 | code_sign_if_enabled "${destination}/$(basename "$1")" 80 | 81 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 82 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 83 | local swift_runtime_libs 84 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 85 | for lib in $swift_runtime_libs; do 86 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 87 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 88 | code_sign_if_enabled "${destination}/${lib}" 89 | done 90 | fi 91 | } 92 | # Copies and strips a vendored dSYM 93 | install_dsym() { 94 | local source="$1" 95 | warn_missing_arch=${2:-true} 96 | if [ -r "$source" ]; then 97 | # Copy the dSYM into the targets temp dir. 98 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 99 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 100 | 101 | local basename 102 | basename="$(basename -s .dSYM "$source")" 103 | binary_name="$(ls "$source/Contents/Resources/DWARF")" 104 | binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" 105 | 106 | # Strip invalid architectures from the dSYM. 107 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 108 | strip_invalid_archs "$binary" "$warn_missing_arch" 109 | fi 110 | if [[ $STRIP_BINARY_RETVAL == 0 ]]; then 111 | # Move the stripped file into its final destination. 112 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 113 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 114 | else 115 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 116 | mkdir -p "${DWARF_DSYM_FOLDER_PATH}" 117 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" 118 | fi 119 | fi 120 | } 121 | 122 | # Used as a return value for each invocation of `strip_invalid_archs` function. 123 | STRIP_BINARY_RETVAL=0 124 | 125 | # Strip invalid architectures 126 | strip_invalid_archs() { 127 | binary="$1" 128 | warn_missing_arch=${2:-true} 129 | # Get architectures for current target binary 130 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 131 | # Intersect them with the architectures we are building for 132 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 133 | # If there are no archs supported by this binary then warn the user 134 | if [[ -z "$intersected_archs" ]]; then 135 | if [[ "$warn_missing_arch" == "true" ]]; then 136 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 137 | fi 138 | STRIP_BINARY_RETVAL=1 139 | return 140 | fi 141 | stripped="" 142 | for arch in $binary_archs; do 143 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 144 | # Strip non-valid architectures in-place 145 | lipo -remove "$arch" -output "$binary" "$binary" 146 | stripped="$stripped $arch" 147 | fi 148 | done 149 | if [[ "$stripped" ]]; then 150 | echo "Stripped $binary of architectures:$stripped" 151 | fi 152 | STRIP_BINARY_RETVAL=0 153 | } 154 | 155 | # Copies the bcsymbolmap files of a vendored framework 156 | install_bcsymbolmap() { 157 | local bcsymbolmap_path="$1" 158 | local destination="${BUILT_PRODUCTS_DIR}" 159 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 160 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 161 | } 162 | 163 | # Signs a framework with the provided identity 164 | code_sign_if_enabled() { 165 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 166 | # Use the current code_sign_identity 167 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 168 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 169 | 170 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 171 | code_sign_cmd="$code_sign_cmd &" 172 | fi 173 | echo "$code_sign_cmd" 174 | eval "$code_sign_cmd" 175 | fi 176 | } 177 | 178 | if [[ "$CONFIGURATION" == "Debug" ]]; then 179 | install_framework "${BUILT_PRODUCTS_DIR}/LUAutocompleteView/LUAutocompleteView.framework" 180 | fi 181 | if [[ "$CONFIGURATION" == "Release" ]]; then 182 | install_framework "${BUILT_PRODUCTS_DIR}/LUAutocompleteView/LUAutocompleteView.framework" 183 | fi 184 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 185 | wait 186 | fi 187 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample-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_LUAutocompleteViewExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_LUAutocompleteViewExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView/LUAutocompleteView.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView/LUAutocompleteView.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView" 9 | OTHER_LDFLAGS = $(inherited) -framework "LUAutocompleteView" 10 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 11 | PODS_BUILD_DIR = ${BUILD_DIR} 12 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 13 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 14 | PODS_ROOT = ${SRCROOT}/Pods 15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_LUAutocompleteViewExample { 2 | umbrella header "Pods-LUAutocompleteViewExample-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /LUAutocompleteViewExample/Pods/Target Support Files/Pods-LUAutocompleteViewExample/Pods-LUAutocompleteViewExample.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView/LUAutocompleteView.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView/LUAutocompleteView.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/LUAutocompleteView" 9 | OTHER_LDFLAGS = $(inherited) -framework "LUAutocompleteView" 10 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 11 | PODS_BUILD_DIR = ${BUILD_DIR} 12 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 13 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 14 | PODS_ROOT = ${SRCROOT}/Pods 15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.9 2 | 3 | import PackageDescription 4 | 5 | let package = Package( 6 | name: "LUAutocompleteView", 7 | platforms: [.iOS(.v13)], 8 | products: [.library(name: "LUAutocompleteView", targets: ["LUAutocompleteView"])], 9 | targets: [.target(name: "LUAutocompleteView", path: "Sources")] 10 | ) 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # LUAutocompleteView 6 | Easy to use and highly configurable autocomplete view that is attachable to any `UITextField` 7 | 8 | ![Swift 5](https://img.shields.io/badge/Swift-5-yellow.svg) 9 | [![Swift Package Manager compatible](https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager) 10 | [![Pod Version](http://img.shields.io/cocoapods/v/LUAutocompleteView.svg?style=flat)](https://cocoapods.org/pods/LUAutocompleteView/) 11 | ![Pod Platform](http://img.shields.io/cocoapods/p/LUAutocompleteView.svg?style=flat) 12 | [![Pod License](http://img.shields.io/cocoapods/l/LUAutocompleteView.svg?style=flat)](https://opensource.org/licenses/MIT) 13 | 14 | ## Installation 15 | 16 | ### CocoaPods 17 | 18 | [CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: 19 | 20 | ```bash 21 | $ sudo gem install cocoapods 22 | ``` 23 | 24 | > CocoaPods 1.13.0+ is required. 25 | 26 | To integrate `LUAutocompleteView` into your Xcode project using CocoaPods, specify it in your `Podfile`: 27 | 28 | ```ruby 29 | source 'https://github.com/CocoaPods/Specs.git' 30 | platform :ios, '13.0' 31 | use_frameworks! 32 | 33 | target '' do 34 | pod 'LUAutocompleteView' 35 | end 36 | ``` 37 | 38 | Then, run the following command: 39 | 40 | ```bash 41 | $ pod install 42 | ``` 43 | 44 | ### Swift Package Manager 45 | 46 | To integrate using Apple's [Swift Package Manager](https://swift.org/package-manager), add the following as a dependency to your `Package.swift`: 47 | 48 | ```Swift 49 | .package(url: "https://github.com/LaurentiuUngur/LUAutocompleteView", from: Version(5, 0, 0)) 50 | ``` 51 | 52 | ### Manually 53 | 54 | If you prefer not to use either of the before mentioned dependency managers, you can integrate `LUAutocompleteView` into your project manually. 55 | 56 | ## Usage 57 | 58 | * Import `LUAutocompleteView` into your project. 59 | 60 | ```Swift 61 | import LUAutocompleteView 62 | ``` 63 | 64 | * Add autocomplete view as subview 65 | 66 | ```Swift 67 | view.addSubview(autocompleteView) 68 | ``` 69 | 70 | * Assign to `textField` property the text field to which the autocomplete view you want be attached. 71 | 72 | ```Swift 73 | autocompleteView.textField = textField 74 | ``` 75 | 76 | * Set as data source and delegate. 77 | 78 | ```Swift 79 | autocompleteView.dataSource = self 80 | autocompleteView.delegate = self 81 | ``` 82 | 83 | * Implement `LUAutocompleteViewDataSource` and `LUAutocompleteViewDelegate` protocols. 84 | 85 | ````Swift 86 | // MARK: - LUAutocompleteViewDataSource 87 | 88 | extension ViewController: LUAutocompleteViewDataSource { 89 | func autocompleteView(_ autocompleteView: LUAutocompleteView, elementsFor text: String, completion: @escaping ([String]) -> Void) { 90 | let elementsThatMatchInput = elements.filter { $0.lowercased().contains(text.lowercased()) } 91 | completion(elementsThatMatchInput) 92 | } 93 | } 94 | 95 | // MARK: - LUAutocompleteViewDelegate 96 | 97 | extension ViewController: LUAutocompleteViewDelegate { 98 | func autocompleteView(_ autocompleteView: LUAutocompleteView, didSelect text: String) { 99 | print(text + " was selected from autocomplete view") 100 | } 101 | } 102 | ```` 103 | 104 | ## Customisation 105 | 106 | * Create your custom autocomplete cell by subclassing `LUAutocompleteTableViewCell`. 107 | * Override `func set(text: String)` from `LUAutocompleteTableViewCell` that is called every time when given text should be displayed by the cell. 108 | 109 | ````Swift 110 | import UIKit 111 | import LUAutocompleteView 112 | 113 | final class CustomAutocompleteTableViewCell: LUAutocompleteTableViewCell { 114 | // MARK: - Base Class Overrides 115 | 116 | override func set(text: String) { 117 | textLabel?.text = text 118 | textLabel?.textColor = .red 119 | } 120 | } 121 | ```` 122 | 123 | * Assign to `autocompleteCell` property your custom autocomplete cell. 124 | 125 | ```Swift 126 | autocompleteView.autocompleteCell = CustomAutocompleteTableViewCell.self 127 | ``` 128 | 129 | ### For more usage details please see example app 130 | 131 | ## Requirements 132 | 133 | - Xcode 15.0+ 134 | - Swift 5.9+ 135 | - iOS 13.0+ 136 | 137 | ## Author 138 | - [Laurentiu Ungur](https://github.com/LaurentiuUngur) 139 | 140 | ## License 141 | - LUAutocompleteView is available under the [MIT license](LICENSE). 142 | -------------------------------------------------------------------------------- /ReadmeIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LaurentiuUngur/LUAutocompleteView/4d7052a058a46bfce6711a8475ca1da576230a1b/ReadmeIcon.png -------------------------------------------------------------------------------- /Sources/LUAutocompleteTableViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LUAutocompleteTableViewCell.swift 3 | // LUAutocompleteView 4 | // 5 | // Created by Laurentiu Ungur on 24/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /// The base class for cells used in `LUAutocompleteView` 12 | open class LUAutocompleteTableViewCell: UITableViewCell { 13 | // MARK - Public Functions 14 | 15 | /** Function that is called when cell is configured with given text. 16 | 17 | - Parameter text: A string that should be displayed. 18 | 19 | - Warning: Must be implemented by each subclass. 20 | */ 21 | open func set(text: String) { 22 | preconditionFailure("This function must be implemented by each subclass") 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Sources/LUAutocompleteView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LUAutocompleteView.swift 3 | // LUAutocompleteView 4 | // 5 | // Created by Laurentiu Ungur on 24/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /// Highly configurable autocomplete view that is attachable to any `UITextField`. 12 | open class LUAutocompleteView: UIView { 13 | // MARK: - Public Properties 14 | 15 | /// The object that acts as the data source of the autocomplete view. 16 | public weak var dataSource: LUAutocompleteViewDataSource? 17 | /// The object that acts as the delegate of the autocomplete view. 18 | public weak var delegate: LUAutocompleteViewDelegate? 19 | 20 | /** The time interval responsible for regulating the rate of calling data source function. 21 | If typing stops for a time interval greater than `throttleTime`, then the data source function will be called. 22 | Default value is `0.4`. 23 | */ 24 | public var throttleTime: TimeInterval = 0.4 25 | /// The maximum height of autocomplete view. Default value is `200.0`. 26 | public var maximumHeight: CGFloat = 200.0 27 | /// A boolean value that determines whether the view should hide after a suggestion is selected. Default value is `true`. 28 | public var shouldHideAfterSelecting = true 29 | /// A boolean value that determines whether the view should show even when no text has been digited. When text is empty, you can return a list of elements in order to show suggestions if this value is set to `true`. Default value is `false`. 30 | public var showElementsWithEmptyText = false 31 | 32 | /** The attributes for the text suggestions. 33 | 34 | - Note: This property will be ignored if `autocompleteCell` is not `nil`. 35 | */ 36 | public var textAttributes: [NSAttributedString.Key: Any]? 37 | /// The text field to which the autocomplete view will be attached. 38 | public weak var textField: UITextField? { 39 | didSet { 40 | guard let textField else { return } 41 | 42 | textField.addTarget(self, action: #selector(textFieldEditingChanged), for: .editingChanged) 43 | textField.addTarget(self, action: #selector(textFieldEditingEnded), for: .editingDidEnd) 44 | textField.addTarget(self, action: #selector(textFieldEditingBegan), for: .editingDidBegin) 45 | 46 | setupConstraints() 47 | } 48 | } 49 | /** A `LUAutocompleteTableViewCell` subclass that will be used to show a text suggestion. 50 | Set your own in order to customise the appearance. 51 | Default value is `nil`, which means the default one will be used. 52 | 53 | - Note: `textAttributes` will be ignored if this property is not `nil` 54 | */ 55 | public var autocompleteCell: LUAutocompleteTableViewCell.Type? { 56 | didSet { 57 | guard let autocompleteCell else { return } 58 | 59 | tableView.register(autocompleteCell, forCellReuseIdentifier: LUAutocompleteView.cellIdentifier) 60 | tableView.reloadData() 61 | } 62 | } 63 | /// The height of each row (that is, table cell) in the autocomplete table view. Default value is `40.0`. 64 | public var rowHeight: CGFloat = 40.0 { 65 | didSet { 66 | tableView.rowHeight = rowHeight 67 | } 68 | } 69 | 70 | // MARK: - Private Properties 71 | 72 | private let tableView = UITableView() 73 | private var heightConstraint: NSLayoutConstraint? 74 | private static let cellIdentifier = "AutocompleteCellIdentifier" 75 | private var elements = [String]() { 76 | didSet { 77 | tableView.reloadData() 78 | height = tableView.contentSize.height 79 | } 80 | } 81 | private var height: CGFloat = 0 { 82 | didSet { 83 | guard height != oldValue else { 84 | return 85 | } 86 | 87 | guard let superview else { 88 | heightConstraint?.constant = (height > maximumHeight) ? maximumHeight : height 89 | return 90 | } 91 | 92 | superview.layoutIfNeeded() 93 | UIView.animate(withDuration: 0.2) { 94 | self.heightConstraint?.constant = min(self.height, self.maximumHeight) 95 | superview.layoutIfNeeded() 96 | } 97 | } 98 | } 99 | 100 | // MARK: - Init 101 | 102 | /** Initializes and returns a table view object having the given frame and style. 103 | 104 | - Parameters: 105 | - frame: A rectangle specifying the initial location and size of the table view in its superview’€™s coordinates. The frame of the table view changes as table cells are added and deleted. 106 | - style: A constant that specifies the style of the table view. See `UITableViewStyle` for descriptions of valid constants. 107 | 108 | - Returns: Returns an initialized `UITableView` object, or `nil` if the object could not be successfully initialized. 109 | */ 110 | public override init(frame: CGRect) { 111 | super.init(frame: frame) 112 | 113 | commonInit() 114 | } 115 | 116 | /** Returns an object initialized from data in a given unarchiver. 117 | 118 | - Parameter coder: An unarchiver object. 119 | 120 | - Retunrs: `self`, initialized using the data in *decoder*. 121 | */ 122 | public required init?(coder aDecoder: NSCoder) { 123 | super.init(coder: aDecoder) 124 | 125 | commonInit() 126 | } 127 | 128 | // MARK: - Private Functions 129 | 130 | private func commonInit() { 131 | addSubview(tableView) 132 | 133 | tableView.register(UITableViewCell.self, forCellReuseIdentifier: LUAutocompleteView.cellIdentifier) 134 | tableView.dataSource = self 135 | tableView.delegate = self 136 | tableView.rowHeight = rowHeight 137 | tableView.tableFooterView = UIView() 138 | tableView.separatorInset = .zero 139 | tableView.contentInset = .zero 140 | tableView.bounces = false 141 | } 142 | 143 | private func setupConstraints() { 144 | guard let textField else { 145 | assertionFailure("Sanity check") 146 | return 147 | } 148 | 149 | tableView.removeConstraints(tableView.constraints) 150 | removeConstraints(self.constraints) 151 | 152 | tableView.translatesAutoresizingMaskIntoConstraints = false 153 | translatesAutoresizingMaskIntoConstraints = false 154 | 155 | heightConstraint = heightAnchor.constraint(equalToConstant: 0) 156 | 157 | let constraints = [ 158 | tableView.leadingAnchor.constraint(equalTo: leadingAnchor), 159 | tableView.trailingAnchor.constraint(equalTo: trailingAnchor), 160 | tableView.topAnchor.constraint(equalTo: topAnchor), 161 | tableView.bottomAnchor.constraint(equalTo: bottomAnchor), 162 | leadingAnchor.constraint(equalTo: textField.leadingAnchor), 163 | trailingAnchor.constraint(equalTo: textField.trailingAnchor), 164 | topAnchor.constraint(equalTo: textField.bottomAnchor), 165 | heightConstraint! 166 | ] 167 | 168 | NSLayoutConstraint.activate(constraints) 169 | } 170 | 171 | @objc private func textFieldEditingChanged() { 172 | NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(getElements), object: nil) 173 | perform(#selector(getElements), with: nil, afterDelay: throttleTime) 174 | } 175 | 176 | @objc private func getElements() { 177 | guard let dataSource else { return } 178 | 179 | guard let text = textField?.text, !text.isEmpty || showElementsWithEmptyText else { 180 | elements.removeAll() 181 | return 182 | } 183 | 184 | dataSource.autocompleteView(self, elementsFor: text) { [weak self] in 185 | self?.elements = $0 186 | } 187 | } 188 | 189 | @objc private func textFieldEditingEnded() { 190 | height = 0 191 | delegate?.autocompleteViewEditingEnded(self) 192 | } 193 | 194 | @objc private func textFieldEditingBegan() { 195 | guard showElementsWithEmptyText else { return } 196 | 197 | NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(getElements), object: nil) 198 | perform(#selector(getElements), with: nil, afterDelay: throttleTime) 199 | } 200 | } 201 | 202 | // MARK: - UITableViewDataSource 203 | 204 | extension LUAutocompleteView: UITableViewDataSource { 205 | /** Tells the data source to return the number of rows in a given section of a table view. 206 | 207 | - Parameters: 208 | - tableView: The table-view object requesting this information. 209 | - section: An index number identifying a section of `tableView`. 210 | 211 | - Returns: The number of rows in `section`. 212 | */ 213 | public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 214 | elements.count 215 | } 216 | 217 | /** Asks the data source for a cell to insert in a particular location of the table view. 218 | 219 | - Parameters: 220 | - tableView: A table-view object requesting the cell. 221 | - indexPath: An index path locating a row in `tableView`. 222 | 223 | - Returns: An object inheriting from `UITableViewCell` that the table view can use for the specified row. An assertion is raised if you return `nil`. 224 | */ 225 | public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 226 | guard let cell = tableView.dequeueReusableCell(withIdentifier: LUAutocompleteView.cellIdentifier) else { 227 | assertionFailure("Cell shouldn't be nil") 228 | return UITableViewCell() 229 | } 230 | 231 | guard indexPath.row < elements.count else { 232 | assertionFailure("Sanity check") 233 | return cell 234 | } 235 | 236 | let text = elements[indexPath.row] 237 | 238 | guard autocompleteCell != nil, let customCell = cell as? LUAutocompleteTableViewCell else { 239 | cell.textLabel?.attributedText = NSAttributedString(string: text, attributes: textAttributes) 240 | cell.selectionStyle = .none 241 | 242 | return cell 243 | } 244 | 245 | customCell.set(text: text) 246 | 247 | return customCell 248 | } 249 | } 250 | 251 | // MARK: - UITableViewDelegate 252 | 253 | extension LUAutocompleteView: UITableViewDelegate { 254 | /** Tells the delegate that the specified row is now selected. 255 | 256 | - Parameters: 257 | - tableView: A table-view object informing the delegate about the new row selection. 258 | - indexPath: An index path locating the new selected row in `tableView`. 259 | */ 260 | public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 261 | guard indexPath.row < elements.count else { 262 | assertionFailure("Sanity check") 263 | return 264 | } 265 | 266 | if shouldHideAfterSelecting { 267 | height = 0 268 | } 269 | textField?.text = elements[indexPath.row] 270 | delegate?.autocompleteView(self, didSelect: elements[indexPath.row]) 271 | } 272 | } 273 | -------------------------------------------------------------------------------- /Sources/LUAutocompleteViewDataSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LUAutocompleteViewDataSource.swift 3 | // LUAutocompleteView 4 | // 5 | // Created by Laurentiu Ungur on 24/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** The `LUAutocompleteViewDataSource` protocol is adopted by an object that mediates the application’™s data model for a `LUAutocompleteView` object. 12 | The data source provides the autocomplete view object with the information it needs to display. 13 | */ 14 | public protocol LUAutocompleteViewDataSource: AnyObject { 15 | /** Asks the data source to provide elements that should be displayed for given text. 16 | 17 | - Parameters: 18 | - autocompleteView: An object representing the autocomplete view requesting this information. 19 | - text: A string representing the input from the text field. 20 | - completion: A closure that contains the elements matching `text` that will be displayed by autocomplete view. 21 | */ 22 | func autocompleteView(_ autocompleteView: LUAutocompleteView, elementsFor text: String, completion: @escaping ([String]) -> Void) 23 | } 24 | -------------------------------------------------------------------------------- /Sources/LUAutocompleteViewDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LUAutocompleteViewDelegate.swift 3 | // LUAutocompleteView 4 | // 5 | // Created by Laurentiu Ungur on 24/04/2017. 6 | // Copyright © 2017 Laurentiu Ungur. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// The delegate of a `LUAutocompleteView` object. 12 | public protocol LUAutocompleteViewDelegate: AnyObject { 13 | /** Tells the delegate the text that user selected. 14 | 15 | - Parameters: 16 | - autocompleteView: An autocomplete view object informing the delegate about the selected text. 17 | - text: A string that was selected in autocomplete view. 18 | */ 19 | func autocompleteView(_ autocompleteView: LUAutocompleteView, didSelect text: String) 20 | 21 | 22 | /** Tells the delegate the editing of text view ended 23 | 24 | - Parameters: 25 | - autocompleteView: An autocomplete view object informing the delegate when editing ended. 26 | */ 27 | func autocompleteViewEditingEnded(_ autocompleteView: LUAutocompleteView) 28 | } 29 | 30 | public extension LUAutocompleteViewDelegate { 31 | func autocompleteViewEditingEnded(_ autocompleteView: LUAutocompleteView) { 32 | } 33 | } 34 | --------------------------------------------------------------------------------