An iOS text field that represents tags, hashtags, tokens in general.

Overview

WSTagsField

Carthage Compatible SwiftPM Compatible CocoaPods Compatible Swift 5.1 Platforms iOS Build Status License MIT

An iOS text field that represents tags, hashtags, tokens in general.

WSTagsField

Usage

let tagsField = WSTagsField()
tagsField.layoutMargins = UIEdgeInsets(top: 2, left: 6, bottom: 2, right: 6)
tagsField.contentInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
tagsField.spaceBetweenLines = 5.0
tagsField.spaceBetweenTags = 10.0
tagsField.font = .systemFont(ofSize: 12.0)
tagsField.backgroundColor = .white
tagsField.tintColor = .green
tagsField.textColor = .black
tagsField.fieldTextColor = .blue
tagsField.selectedColor = .black
tagsField.selectedTextColor = .red
tagsField.delimiter = ","
tagsField.isDelimiterVisible = true
tagsField.placeholderColor = .green
tagsField.placeholderAlwaysVisible = true
tagsField.keyboardAppearance = .dark
tagsField.returnKeyType = .next
tagsField.acceptTagOption = .space
tagsField.shouldTokenizeAfterResigningFirstResponder = true

// Events
tagsField.onDidAddTag = { field, tag in
    print("DidAddTag", tag.text)
}

tagsField.onDidRemoveTag = { field, tag in
    print("DidRemoveTag", tag.text)
}

tagsField.onDidChangeText = { _, text in
    print("DidChangeText")
}

tagsField.onDidChangeHeightTo = { _, height in
    print("HeightTo", height)
}

tagsField.onValidateTag = { tag, tags in
    // custom validations, called before tag is added to tags list
    return tag.text != "#" && !tags.contains(where: { $0.text.uppercased() == tag.text.uppercased() })
}

print("List of Tags Strings:", tagsField.tags.map({$0.text}))

Installation

Carthage

To install it, simply add the following line to your Cartfile:

github "whitesmith/WSTagsField"

Then run carthage update.

Follow the current instructions in Carthage's README for up to date installation instructions.

CocoaPods

To install it, simply add the following line to your Podfile:

pod "WSTagsField"

Then run pod install with CocoaPods 1.8.0 or newer.

Swift Package Manager

Using Xcode 11, just go to "File" > "Swift Packages" > "Add Package Dependency..." and use this repository: https://github.com/whitesmith/WSTagsField.

Manually

Download all the source files and drop them into your project.

Requirements

  • iOS 9.0+
  • Xcode 11 (Swift 5.1)

Contributing

The best way to contribute is by submitting a pull request. We'll do our best to respond to your patch as soon as possible. You can also submit a new GitHub issue if you find bugs or have questions. :octocat:

Credits

Whitesmith

This project was inspired by CLTokenInputView.

Comments
  • Not working in static TableViewController Cell

    Not working in static TableViewController Cell

    It freezes my TableViewController when i subclass the TextField to WSTagsField in the Storyboard, and i get the below error after the app stops

    Discarding message for event 1 because of too many unprocessed messages 2017-03-13 16:56:26.713355 LocationApp[46653:475740] [Client] Discarding message for event 27 because of too many unprocessed messages (lldb)

    i try subclassing in my TableViewController class only, like this @IBOutlet weak var tagsTextField: WSTagsField! But its not putting the text in tags, treating it like normal TextField

    bug 
    opened by moderateepheezy 16
  • does not work auto-increment cell

    does not work auto-increment cell

    `

    tableviewcell:
     @IBOutlet weak var tagsView: UIView!
    
    tableviewcontroller:
    
            cell = tableView.dequeueReusableCell(withIdentifier: "tagField", for: indexPath) as! AddManuallyRecipeTableViewCell
    
            let tagsView = cell.tagsView!
            let tagsField = WSTagsField()
            
            tagsField.frame = tagsView.bounds
            tagsView.addSubview(tagsField)
            
            tagsField.layer.cornerRadius = 3.0
            tagsField.font = .systemFont(ofSize: 14.0)
            tagsField.placeholder = "Добавить тэг ..."
            tagsField.returnKeyType = .next
            tagsField.delimiter = " "
    
            tagsField.onDidChangeHeightTo = { _, height in
                print("HeightTo \(height)")
                
                tableView.beginUpdates()
                tableView.endUpdates()
                
            }
    

    `

    2018-02-21 14 02 11

    how to fix?

    opened by aleksandr-govorukhin 12
  • Keyboard Appearance reverting to default on delete

    Keyboard Appearance reverting to default on delete

    Which version of the WSTagsField are you using?

    E.g. 1.0.11

    On which platform does the issue happen?

    iOS11

    Are you using Cocoapods?

    Yes, up to date version

    Which version of Xcode are you using?

    Xcode 11.0

    What did you expect to happen?

    I expect the keyboard to stay what Ive set it to. ie, maintain .dark appearance

    What happened instead?

    When deleting a WSTagField the keyboard reverts to default keyboard.

    opened by tristanmellett 8
  • Use Cases When Integrating WSTagsField In Search Bar

    Use Cases When Integrating WSTagsField In Search Bar

    I have a few questions about how to correctly integrate WSTagsField as a search field:

    1. If backspace is pressed for a partially entered text, a tag with that partial text will be added automatically. Can I disable this feature? Is editing allowed when inputing the tag?
    2. Is there any way to access the index of a specific that is generated?
    opened by justinguo 8
  • How to add observer for the WSTagsField

    How to add observer for the WSTagsField

    I created ViewController including WSTagsFields. When I dismiss the current ViewController, it shows Error related to the observer for the WSTagsFields. How can I fix this? Please have a look at the attachments. image_2019_10_30T16_42_47_267Z

    opened by alexander1031 7
  • Crashes occur in iOS versions except for iOS13

    Crashes occur in iOS versions except for iOS13

    Which version of the WSTagsField are you using?

    5.1.0

    On which platform does the issue happen?

    Except for iOS13

    Are you using Carthage?

    ❯ carthage version
    0.33.0
    

    Which version of Xcode are you using?

    ❯ xcodebuild -version
    Xcode 11.0
    Build version 11A420a
    

    What did you do?

    I had observed that WSTagsField 4.x.x crashes in iOS13. I replace its version to latest one, then crashes disappear in iOS13, but on the other hand crashes occur in iOS versions except for iOS13. It seems to crash when OS recycle the cells which use WSTagsField.

    opened by Masaokb 7
  • If select tag and pickker image

    If select tag and pickker image

    What did you do?

    When i choose image from library wstagfield is cach.

    open var selected: Bool = false {
            didSet {
                if selected && !isFirstResponder {
                    _ = becomeFirstResponder()
                } else
                if !selected && isFirstResponder {
                    _ = resignFirstResponder()
                }
                updateContent(animated: true)
            }
        }
    

    What did you expect to happen?

    don't cach when pickker image **If i want select tag is delete tag. Did you know

    What happened instead?

    error cach

    opened by Skyzwing 6
  • It's not removing the `layerBoundsObserver` correctly in iOS 11

    It's not removing the `layerBoundsObserver` correctly in iOS 11

    Which version of the WSTagsField are you using?

    3.1

    On which platform does the issue happen?

    iOS11

    Are you using Carthage?

    no

    Are you using Cocoapods?

    1.5.3

    Which version of Xcode are you using?

    Xcode 9.4.1 Build version 9F2000

    What did you do?

    its good idea to remove Observer in ios 11 , please check . https://stackoverflow.com/questions/46782372/ios-11-what-the-kvo-is-retaining-all-observers-of-this-object-if-it-crashes-an

    code :
    deinit {
            if ProcessInfo.processInfo.operatingSystemVersion.majorVersion < 11,let observer = layerBoundsObserver {
                print("removeObserver")
                removeObserver(observer, forKeyPath: "layer.bounds")
            }
    
    we need to remove Observer in ios 11 ,so i change the code to 
    
    deinit {
            if let observer = layerBoundsObserver {
                print("removeObserver")
                removeObserver(observer, forKeyPath: "layer.bounds")
            }
    
    thank  you
    bug 
    opened by abufaeys 6
  • Base class changed to `UIScrollView`, animate selection, detect tags automatically by delimiter, etc.

    Base class changed to `UIScrollView`, animate selection, detect tags automatically by delimiter, etc.

    • code style fixes, configured to work with SwiftLint;
    • animation of tag selection;
    • base class changed from UIView to UIScrollView and added maxHeight parameter - if tags height more than this value scrolling will appear;
    • detect automatically tags by specified delimiter + bool value to show/hide delimiter;
    • fixed sample application (need to be improved in the future);
    opened by krezzoid 6
  • inputFieldAccessoryView with ContainerView (with UIViewController)  problem

    inputFieldAccessoryView with ContainerView (with UIViewController) problem

    Hi, You can download example project here: https://goo.gl/iLtxY5 Issue reproduce steps; 1- Run project 2- Add one or more tag 3- Select one tag and delete it.

    Error; 'UIViewControllerHierarchyInconsistency', reason: 'child view controller should have parent view controller:<UICompatibilityInputViewController: 0x7fc56dd4eca0> but actual parent is...

    I read a lot of documents but i can't find solution.

    awaiting input 
    opened by hamzauzumcu 6
  • Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <_NSKeyValueObservation 0x600001be8150> for the key path because it is not registered as an observer.'">

    Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <_NSKeyValueObservation 0x600001be8150> for the key path "layer.bounds" from because it is not registered as an observer.'

    iOS 13 beta 3 Xcode Version 11.0 beta (11M336w)

    Looks like this issue happens during removeObserver into deist of class WSTagsField deinit { if let observer = layerBoundsObserver { removeObserver(observer, forKeyPath: "layer.bounds") observer.invalidate() } }

    Screen Shot 2019-07-16 at 3 21 31 PM
    opened by mroffmix 5
  • Give developer chance to deal with pasted content

    Give developer chance to deal with pasted content

    I want to allow users to paste bunch of tags into a WSTagsField in my project, like "Apple Pear Banana". onDidChangeText isn't enough to check if the content is coming from pasteboard or not for this use case.

    opened by porter-liu 0
  • MemoryLeak

    MemoryLeak

    On which platform does the issue happen?

    E.g. iOS15

    Are you using Cocoapods?

    Yes, Updated version

    Which version of Xcode are you using?

    Xcode 14

    What did you do?

    I am getting memory leak in WSTagsFields init layerBoundsObserver = self.observe(.layer.bounds, options: [.old, .new]) { [weak self] sender, change in guard change.oldValue?.size.width != change.newValue?.size.width else { return } self?.repositionViews() }

    opened by mazzharr 0
  • App stucks when the text field is tapped and the keyboard appears (iOS 15 - iPhone 7)

    App stucks when the text field is tapped and the keyboard appears (iOS 15 - iPhone 7)

    I tried to make a demo app with WSTagsField. However when the app launches and the field is tapped and the keyboard appears, memory taken by the app start increasing by leaps and bounds without stopping and the app stucks - i.e. stops responding. I found out that the repositionViews is being called again and again endlessly. Can you fix this asap please?

    opened by mibrahim025 7
  • Change color of Pointer and tags background color.

    Change color of Pointer and tags background color.

    Currently, when we change the tint color, the color of the pointer and tags background changed. I want to show different pointer and tags background colors.

    opened by m-junaid-butt 1
  • SwiftUI app crash on invalidateIntrinsicContentSize()

    SwiftUI app crash on invalidateIntrinsicContentSize()

    Which version of the WSTagsField are you using?

    SPM 5.4.0

    On which platform does the issue happen?

    iOS 14.5

    Are you using Carthage?

    No

    Are you using Cocoapods?

    No

    Which version of Xcode are you using?

    Version 12.5.1 (12E507)

    What did you do?

    I created WSTagsField asUIViewRepresentable in its simplest form and put it in the Form in Section shown by .fullscreenCover() from the parent view.

    struct HashtagsTextField: UIViewRepresentable {
        
        private enum Constants {
            static let layoutMargins = UIEdgeInsets(top: 2, left: 6, bottom: 2, right: 6)
            static let contentInstet = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 16)
            static let spaceBetweenLines: CGFloat = 5.0
            static let spaceBetweenTags: CGFloat = 10.0
        }
        
        // MARK: - Stored Properties
        
        @Binding private(set) var text: String
        let placeholder: String
        
        private let tagsField = WSTagsField()
        
        // MARK: - Methods
        
        func makeUIView(context: Context) -> WSTagsField {
            tagsField.layoutMargins = Constants.layoutMargins
            tagsField.contentInset = Constants.contentInstet
            tagsField.spaceBetweenLines = Constants.spaceBetweenLines
            tagsField.spaceBetweenTags = Constants.spaceBetweenTags
            tagsField.font = .systemFont(ofSize: 17.0)
            tagsField.backgroundColor = .clear
            tagsField.tintColor = UIColor(named: "darkBrown")
            tagsField.textColor = .white
            tagsField.selectedColor = UIColor(named: "darkBrown")
            tagsField.selectedTextColor = .white
            tagsField.isDelimiterVisible = true
            tagsField.placeholderColor = UIColor(named: "text")
            tagsField.placeholderAlwaysVisible = false
            tagsField.acceptTagOption = .space
            tagsField.shouldTokenizeAfterResigningFirstResponder = true
            return tagsField
        }
        
        func updateUIView(_ uiView: WSTagsField, context: Context) {
            uiView.text = text
        }
        
    }
    

    What did you expect to happen?

    App doesn't crash when fullScreenCover disappears (maybe it's time to make SwiftUI version of this field?).

    What happened instead?

    When WSTagsField (as UIViewRepresentable) is in the Section in Form as the content of the .fullScreenCover() and the view disappears (via presentationMode environment), the app crashes every time.

    opened by tryboxx 0
Releases(5.4.0)
  • 5.4.0(Jul 31, 2020)

    Changes included:

    • Changed access to tagViews to open to allow manipulation of specific tags views, i.e. tintColor (#143). Thanks @cdf1982.
    • Added shouldTokenizeAfterResigningFirstResponder flag (#141). Thanks @rizwan95.
    • Add prebuilt binaries for Xcode 11.6.

    CocoaPods

    pod 'WSTagsField', '~> 5.4'
    

    Carthage

    github "whitesmith/WSTagsField" ~> 5.4
    
    Source code(tar.gz)
    Source code(zip)
    WSTagsField.framework.zip(3.64 MB)
  • 5.3.1(May 1, 2020)

  • 5.3.0(May 1, 2020)

  • 5.2.0(Nov 5, 2019)

  • 5.1.1(Oct 3, 2019)

  • 5.1.0(Sep 18, 2019)

    Changes included:

    • Added support for Swift Package Manager 🎉
    • Added compatibility with iOS 13 (Xcode 11).
    • Improved compatibility with textFieldShouldReturn delegate method.
    • Removed deprecated properties.
    • Fixed keyboard appearance reverting to default when TagView is selected (#121)

    CocoaPods

    pod 'WSTagsField', '~> 5.1'
    

    Carthage

    github "whitesmith/WSTagsField" ~> 5.1
    
    Source code(tar.gz)
    Source code(zip)
    WSTagsField.framework.zip(3.54 MB)
  • 5.0.0(May 7, 2019)

  • 4.1.0(Feb 21, 2019)

  • 4.0.0(Sep 14, 2018)

  • 3.2.0(Sep 14, 2018)

    Changes

    • Fix of KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED crash #103 & #101
    • #99 Add an option to stop WSTagsField from becoming scrollable (ty @bellebethcooper)
    • #95 Make keyboard appearance type open (ty @tim289)
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(Apr 9, 2018)

    Changes

    • By default, the return key is used to create a tag in the field. Now, you can change it and use the comma or the space key instead: tagsField.acceptTagOption = .space.
    • onDidEndEditing and onDidBeginEditing events were removed in favor of UITextFieldDelegate methods (textFieldDidBeginEditing(textField:) and textFieldDidEndEditing(textField:)). The delegate should be assigned to the textDelegate property and it's related with the input text field. It's also a nice way to have access to textFieldShouldReturn(textField:) where it's possible to change the first responder when the return key is free (i.e.: tagsField.acceptTagOption = .comma is set).
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Apr 9, 2018)

    Breaking changes

    • padding property is now using the standard contentInset property of UIView. So, padding has been deprecated.
    • displayDelimiter has been renamed to isDelimiterVisible.
    • tagCornerRadius has been renamed to cornerRadius.
    • placeholderAlwayVisible has been renamed to placeholderAlwaysVisible.

    Changes

    • You can now define the size of the TagView by defining a margin of type UIEdgeInsets to layoutMargins property.
    • You can now define a max number of lines by using the numberOfLines property.
    • You can now define the space between lines using the spaceBetweenLines property.

    Fixes

    • #65 layout issues in an UITableView.

    Thanks 🎉💪🙌

    @billzhou0223, @griffinmacias, @matsune, @nicol3a and @CharlesAbouYakzan for the amazing API improvements and fixes. @krezzoid for the conversion and improvements for Swift 4.0.

    Source code(tar.gz)
    Source code(zip)
  • 2.1.2(Jul 7, 2017)

  • 2.1.1(Apr 7, 2017)

  • 1.3.0(Apr 9, 2018)

    Please use the swift2.3 branch for now.

    CocoaPods

    pod 'WSTagsField', :git => 'https://github.com/whitesmith/WSTagsField.git', :branch => 'swift2.3'
    

    or just add swift_version = '2.3' to your Podfile:

    target 'AmazingProject' do
      swift_version = '2.3'
      pod 'WSTagsField', '~>1.2.0'
    end
    

    Carthage

    github "whitesmith/WSTagsField" "swift2.3"
    

    or just run carthage with Swift 2.3 toolchain:

    carthage update WSTagsField --no-use-binaries --platform iOS --toolchain
    com.apple.dt.toolchain.Swift_2_3
    
    Source code(tar.gz)
    Source code(zip)
  • 1.2.5(Apr 7, 2017)

  • 1.2.4(Apr 7, 2017)

  • 2.1.0(Jan 6, 2017)

  • 2.0.1(Jan 6, 2017)

    ⚠️ Missed CocoaPod update.

    • Fix #30: add keyboard return key type (ty @ShiWeiCN)
    • Fix #29: switching readonly on and off (ty @treyrich)
    • Fix #25: add inputFieldAccessoryView property
    • Fix #24: add onDidSelectTagView and onDidUnselectTagView event
    • Enhancement: add selectNextTag and selectPrevTag methods
    Source code(tar.gz)
    Source code(zip)
    WSTagsField.framework.zip(1.68 MB)
  • 2.0.0(Sep 30, 2016)

  • 2.0.0.beta.1(Aug 26, 2016)

    Features

    • Adds Swift 3.0 compatibility.

    Instructions

    Carthage

    github "whitesmith/WSTagsField" "2.0.0.beta.1"
    

    CocoaPods

    pod "WSTagsField", :git => 'https://github.com/whitesmith/WSTagsField.git', :tag => '2.0.0.beta.1'
    

    Note: Ready for CocoaPods 1.1.0.beta.1 version (gem install cocoapods --pre).

    For more information please see the updated README.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.3(Aug 18, 2016)

  • 1.2.2(Jul 29, 2016)

  • 1.2.1(Jul 15, 2016)

  • 1.2(Jul 15, 2016)

  • 1.1.1(Jul 4, 2016)

  • 1.1(Jul 4, 2016)

  • 1.0(Jul 4, 2016)

Owner
Whitesmith
Digital Product and Innovation Studio
Whitesmith
Useful for showing text or custom view tags in a vertical or horizontal scrollable view and support Autolayout at the same time

Useful for showing text or custom view tags in a vertical or horizontal scrollable view and support Autolayout at the same time. It is highly customizable that most features of the text tag can be configured.

zekunyan 1.8k Dec 30, 2022
TagsGridView: A simple view for your tags

TagsGridView: A simple view for your tags. Requirements Installation Contents License Support Credits Requirements iOS 14, macOS 10.15 Swift 5.5 Xcode

Alex 5 Nov 4, 2021
This pod provides a view controller for choosing and creating tags in the style of wordpress or tumblr.

PARTagPicker This pod provides a view controller for choosing and creating tags in the style of wordpress or tumblr. This tag picker was originally us

Paul Rolfe 370 Nov 17, 2022
UIScrollView subclass that allows to add a list of highly customizable tags.

UIScrollView subclass that allows to add a list of highly customizable tags. You can customize colors, border radius, and the tail of the tag. Tags ca

Andrea Mazzini 765 Nov 19, 2022
Swift plugin which allow add mask to input field

AKMaskField AKMaskField is UITextField subclass which allows enter data in the fixed quantity and in the certain format (credit cards, telephone numbe

Artem Krachulov 347 Jul 19, 2022
Simple and highly customizable iOS tag list view, in Swift.

TagListView Simple and highly customizable iOS tag list view, in Swift. Supports Storyboard, Auto Layout, and @IBDesignable. Usage The most convenient

Ela Workshop 2.5k Dec 28, 2022
Simple and highly customizable iOS tag list view, in Swift.

TagListView Simple and highly customizable iOS tag list view, in Swift. Supports Storyboard, Auto Layout, and @IBDesignable. Usage The most convenient

Ela Workshop 2.5k Dec 31, 2022
An iOS text field that represents tags, hashtags, tokens in general.

WSTagsField An iOS text field that represents tags, hashtags, tokens in general. Usage let tagsField = WSTagsField() tagsField.layoutMargins = UIEdgeI

Whitesmith 1.2k Jan 9, 2023
Convert text with HTML tags, links, hashtags, mentions into NSAttributedString. Make them clickable with UILabel drop-in replacement.

Atributika is an easy and painless way to build NSAttributedString. It is able to detect HTML-like tags, links, phone numbers, hashtags, any regex or

Pavel Sharanda 1.1k Dec 26, 2022
Convert text with HTML tags, links, hashtags, mentions into NSAttributedString. Make them clickable with UILabel drop-in replacement.

Atributika is an easy and painless way to build NSAttributedString. It is able to detect HTML-like tags, links, phone numbers, hashtags, any regex or

Pavel Sharanda 1.1k Jan 8, 2023
Convert text with HTML tags, links, hashtags, mentions into NSAttributedString. Make them clickable with UILabel drop-in replacement.

Convert text with HTML tags, links, hashtags, mentions into NSAttributedString. Make them clickable with UILabel drop-in replacement.

Pavel Sharanda 1.1k Dec 26, 2022
Swift-Misc-Utility - Taking the misc out of General Utility so that General only defines the namespace

Swift-Misc-Utility Everything extra that used to be in Swift-General-Utility has

Erica Sadun 4 Feb 4, 2022
Highly customizable iOS tags view [input, edit, dynamic, tag, token, field, NSTokenField]

RKTagsView Highly customizable iOS tags view (like NSTokenField). Supports horizontal and vertical direction, editing, multiple selection, Auto Layout

Roman Kulesha 450 Oct 2, 2022
A passcode entry field for macOS similar to Apple's two-factor authentication field.

DSFPasscodeView A passcode entry field for macOS similar to Apple's two-factor authentication field. About The control is made up of multiple groups o

Darren Ford 10 Nov 12, 2022
A repository to experiment around the use and generation of tokens for the JLL/T Design System

Basic Style Dictionary This example code is bare-bones to show you what this framework can do. If you have the style-dictionary module installed globa

null 0 Dec 7, 2021
Useful for showing text or custom view tags in a vertical or horizontal scrollable view and support Autolayout at the same time

Useful for showing text or custom view tags in a vertical or horizontal scrollable view and support Autolayout at the same time. It is highly customizable that most features of the text tag can be configured.

zekunyan 1.8k Dec 30, 2022
Generate styled SwiftUI Text from strings with XML tags.

XMLText is a mini library that can generate SwiftUI Text from a given XML string with tags. It uses AttributedString to compose the final text output.

null 15 Dec 7, 2022
UILabel drop-in replacement supporting Hashtags

ActiveLabel.swift UILabel drop-in replacement supporting Hashtags (#), Mentions (@), URLs (http://), Emails and custom regex patterns, written in Swif

Optonaut 4.2k Dec 31, 2022
AEOTPTextField - A beautiful iOS OTP Text Field library, written in Swift with full access customization in UI.

AEOTPTextField - A beautiful iOS OTP Text Field library, written in Swift with full access customization in UI.

Abdelrhman Kamal 79 Jan 3, 2023
A SwiftUI TextField with a prompt (or placeholder) that floats above the text field when active or not empty. Requires iOS 15.

FloatingPromptTextField A prompt is the label in a text field that informs the user about the kind of content the text field expects. In a default Tex

Emilio Peláez 43 Nov 3, 2022