AutoCompleteTextField
  • October 21, 2023

Features


  •  Provides a subclass of UITextField that has suggestion from input
  •  Has autocomplete input feature
  •  Data suggestion are provided by users
  •  Enable store smart domains
  •  Optimized and light weight

Requirements


  • iOS 12.0+
  • Swift 5.x

Installation


CocoaPods

You can use CocoaPods to install AutoCompleteTextField by adding it to your Podfile:

pod “AutoCompleteTextField”

Carthage

Create a Cartfile that lists the framework and run carthage bootstrap. Follow the instructions to add $(SRCROOT)/Carthage/Build/iOS/AutoCompleteTextField.framework to an iOS project.

github “nferocious76/AutoCompleteTextField”

Manually
  1. Download and drop /Pod/Classesfolder in your project.
  2. Congratulations!

Usage


 

// Initializing `AutoCompleteTextField`
let myTextField = AutoCompleteTextField(frame: CGRect(x: 20, y: 64, width: view.frame.width – 40, height: 40), dataSource: `YourDataSource`, delegate: `YourDelegate`)

// Setting `dataSource`, it can be set from the XCode IB like `TextFieldDelegate` in which will appear as `actfDataSource`
myTextField.dataSource = `YourDataSource`

// Setting delimiter (optional). If set, it will only look for suggestion after the delimiter
myTextField.setDelimiter(“@”)

// Show `AutoCompleteButton`
myTextField.showAutoCompleteButtonWithImage(UIImage(named: “checked”), viewMode: .whileEditing)

// Providing data source to get the suggestion from inputs
func autoCompleteTextFieldDataSource(_ autoCompleteTextField: AutoCompleteTextField) -> [ACTFWeightedDomain] {
return weightedDomains // AutoCompleteTextField.domainNames // [ACTFDomain(text: “gmail.com”, weight: 0), ACTFDomain(text: “hotmail.com”, weight: 0), ACTFDomain(text: “domain.net”, weight: 0)]
}

// optional delegate for checking what was suggested
func autoCompleteTextField(_ autoCompleteTextField: AutoCompleteTextField, didSuggestDomain domain: ACTFDomain) {
print(“Suggested domain: \(domain.text) – weight: \(domain.weight)”)
}

ACTFDomain


ACTFDomain is class type that conforms to the Codable. User can store and retrieve smart domains.

One example may be ‘gmail.com’ and ‘georgetown.edu’. Users are more likely to have a ‘gmail.com’ account so we would want that to show up before ‘georgetown.edu’, even though that is out of alphabetical order.

ACTFDomain is sorted based on its usage with auto storing flag that is default to true.

This is just one example. Manually providing a suggestion gives more flexibility and does not force the usage of an array of strings.

// Usage
let g1 = ACTFDomain(text: “gmail.com”, weight: 10)
let g2 = ACTFDomain(text: “googlemail.com”, weight: 5)
let g3 = ACTFDomain(text: “google.com”, weight: 4)
let g4 = ACTFDomain(text: “georgetown.edu”, weight: 1)

let weightedDomains = [g1, g2, g3, g4] // [ACTFDomain]

// Storing

// store single
if g1.store() {
print(“Store success”)
}

// store multiple
let errors = ACTFDomain.store(domains: weightedDomains)
if errors.count > 0 {
print(“Store domain errors: “, errors)
}

// Retrieving

// retrieved single
if let domain = ACTFDomain.domain(for: “gmail.com”) {
print(“Retrieved single: “, domain.text, domain.weight)
}

// retrieved multiple
let keys = [“gmail.com”, “googlemail.com”, “google.com”, “georgetown.edu”]
let retriedDomains = ACTFDomain.domain(for: keys)
print(“Retrieved domains: “, retriedDomains.map ({ “Domain: \($0.text) – weight: \($0.weight)” }))

GitHub


View Github

#animation #awesemetextfield #carthage #cocoapods #currencytextfield #customtextfield #customwidgets #facetedsearch #geosearch #growingtextview #instantsearch #interfacebuilder #ios #iosdevelopment #ioslibrary #iosswift #opensource #passwordtextfield #placeholder #placeholdertextview #realmswift #search #searchengine #searchinterface #searchsynonyms #styledtext #swift #swiftframework #swiftlibrary #swiftpackagemanager #swiftui #swiftuicomponents #textexpansion #textfield #texture #textview #tjtextfield #ui #uikit #uitextfield #uitextfieldnavigation #uitextview #uitextviewalgolia #widgets
YOU MIGHT ALSO LIKE...
Popup View

Floaters Toasts Popups Sheets

Drops 💧

A µFramework for showing alerts like the one used when copying from pasteboard or connecting Apple pencil.

MarqueeText

A SwiftUI Marquee or "scrolling text" effect found in Apple native apps. For when one line isn't enough, but two ...

TextBuilder

Introduction Text composition in SwiftUI can often be cumbersome, especially when there's logic affecting its format and content. TextBuilder leverages the ...

TextView

Download File -> Swift Packages -> Add Package Dependency... Select your project Enter https://github.com/kenmueller/TextView for the package repository URL Select Branch: master Click Finish ...