ADBoundTextView

open class ADBoundTextView: UITextView, UITextViewDelegate, ADBindable

Creates a text view that can be bound to a value from a data model that conforms to the Codable protocol when placed on a ADBoundViewController view. Use the dataPath property to specify the field from the bound data model to populate the text view from or a formula in a SQL like syntax.

Example:

// Given the following class
class Category: ADDataTable {

    enum CategoryType: String, Codable {
        case local
        case web
    }

    static var tableName = "Categories"
    static var primaryKey = "id"
    static var primaryKeyType: ADDataTableKeyType = .computedInt

    var id = 0
    var added = Date()
    var name = ""
    var description = ""
    var enabled = true
    var highlightColor = UIColor.white.toHex()
    var type: CategoryType = .local
    var icon: Data = UIImage().toData()

    required init() {

    }
}

// Bind the text view to the description field
myTextView.dataPath = "description"
  • The name of the field from the date model used to populate the value from.

    Example:

    // Given the following class
    class Category: ADDataTable {
    
        enum CategoryType: String, Codable {
            case local
            case web
        }
    
        static var tableName = "Categories"
        static var primaryKey = "id"
        static var primaryKeyType: ADDataTableKeyType = .computedInt
    
        var id = 0
        var added = Date()
        var name = ""
        var description = ""
        var enabled = true
        var highlightColor = UIColor.white.toHex()
        var type: CategoryType = .local
        var icon: Data = UIImage().toData()
    
        required init() {
    
        }
    }
    
    // Bind the text view to the description field
    myTextView.dataPath = "description"
    

    Remark

    The case and name of the field specified in the dataPath property must match the case and name from the data model bound to the ADBoundViewController.

    Declaration

    Swift

    @IBInspectable public var dataPath: String = ""
  • The name of the field from the date model or forumla (using SQL syntax) used to set the enabled state from.

    Example:

    // Given the following class
    class Category: ADDataTable {
    
        enum CategoryType: String, Codable {
            case local
            case web
        }
    
        static var tableName = "Categories"
        static var primaryKey = "id"
        static var primaryKeyType: ADDataTableKeyType = .computedInt
    
        var id = 0
        var added = Date()
        var name = ""
        var description = ""
        var enabled = true
        var highlightColor = UIColor.white.toHex()
        var type: CategoryType = .local
        var icon: Data = UIImage().toData()
    
        required init() {
    
        }
    }
    
    // Bind the text view to the enabled field
    myTextView.enabledPath = "enabled"
    

    Remark

    The case and name of the field specified in the enabledPath property must match the case and name from the data model bound to the ADBoundViewController. Optionally, the value can be a forumla using a subset of the SQL syntax.

    Declaration

    Swift

    @IBInspectable public var enabledPath: String = ""
  • The name of the field from the date model or forumla (using SQL syntax) used to set the hidden state from.

    Example:

    // Given the following class
    class Category: ADDataTable {
    
        enum CategoryType: String, Codable {
            case local
            case web
        }
    
        static var tableName = "Categories"
        static var primaryKey = "id"
        static var primaryKeyType: ADDataTableKeyType = .computedInt
    
        var id = 0
        var added = Date()
        var name = ""
        var description = ""
        var enabled = true
        var quantity = 0
        var highlightColor = UIColor.white.toHex()
        var type: CategoryType = .local
        var icon: Data = UIImage().toData()
    
        required init() {
    
        }
    }
    
    // Set the hidden state based on a formula.
    myTextView.hiddenPath = "quantity > 0"
    

    Remark

    The case and name of the field specified in the hiddenPath property must match the case and name from the data model bound to the ADBoundViewController. Optionally, the value can be a forumla using a subset of the SQL syntax.

    Declaration

    Swift

    @IBInspectable public var hiddenPath: String = ""
  • The name of the field from the date model or forumla (using SQL syntax) used to set the text color from.

    Example:

    // Given the following class
    class Category: ADDataTable {
    
        enum CategoryType: String, Codable {
            case local
            case web
        }
    
        static var tableName = "Categories"
        static var primaryKey = "id"
        static var primaryKeyType: ADDataTableKeyType = .computedInt
    
        var id = 0
        var added = Date()
        var name = ""
        var description = ""
        var enabled = true
        var quantity = 0
        var highlightColor = UIColor.white.toHex()
        var type: CategoryType = .local
        var icon: Data = UIImage().toData()
    
        required init() {
    
        }
    }
    
    // Set the text color based on a formula.
    myTextView.colorPath = "highlightColor"
    

    Remark

    The case and name of the field specified in the colorPath property must match the case and name from the data model bound to the ADBoundViewController. Optionally, the value can be a forumla using a subset of the SQL syntax.

    Declaration

    Swift

    @IBInspectable public var colorPath: String = ""
  • If true this text view cause the parent ADBoundViewController to update the form when the value changes. Works with the onEndEdit property, if it’s true the change will only be sent when the user finishes editing the field, else the change will be sent on individual character changes.

    Declaration

    Swift

    @IBInspectable public var liveUpdate: Bool = false
  • If true, the text view will be dimmed when it is not editable, else it will not be dimmed.

    Declaration

    Swift

    @IBInspectable public var dimOnDisabled: Bool = true
  • Works with the liveUpdate property, if it’s true the change will only be sent when the user finishes editing the field, else the change will be sent on individual character changes.

    Declaration

    Swift

    @IBInspectable public var onEndEdit: Bool = true
  • If true a Done accessory button will be displayed along with the onscreen keyboard when this view is edited.

    Declaration

    Swift

    @IBInspectable public var showDoneButton: Bool = true
  • If true Previous and Next accessory buttons will be displayed along with the onscreen keyboard when this view is edited.

    Declaration

    Swift

    @IBInspectable public var showPrevNextButtons: Bool = true
  • Provides a link to the ADBoundViewController that the control is bound to.

    Declaration

    Swift

    public weak var controller: ADBoundViewController?
  • Provides a unique ID that is assigned to the control when it is bound to a ADBoundViewController.

    Remark

    You should never set or change this number yourself, this value will be managed by the ADBoundViewController and is used to handle form and keyboard events.

    Declaration

    Swift

    public var formID: Int = -1
  • Returns true if the value of the control can be edited by the user, else returns false.

    Declaration

    Swift

    public var isMutable: Bool
  • Undocumented

    Declaration

    Swift

    open class ADBoundTextView: UITextView, UITextViewDelegate, ADBindable
  • Sets the value of the text view from the given value. If the value is an Int or Float it will be converted to a string. If the value is a Bool it will be converted to the string values of true or false.

    Declaration

    Swift

    public func setValue(_ value: Any)

    Parameters

    value

    The value to set the text view to.

  • Sets the enabled state of the control from the given value. If the value is an Int or Float, 0 and 1 will be converted to false and true. If the value is a String, yes, on, true, 1 will be converted to true, all other values will result in false.

    Remark

    For a text view, enabled is mapped to editable.

    Declaration

    Swift

    public func setEnabledState(_ value: Any)

    Parameters

    value

    The value to set the enabled state from.

  • Sets the hidden state of the control from the given value. If the value is an Int or Float, 0 and 1 will be converted to false and true. If the value is a String, yes, on, true, 1 will be converted to true, all other values will result in false.

    Declaration

    Swift

    public func setHiddenState(_ value: Any)

    Parameters

    value

    The value to set the enabled state from.

  • Sets the text color from the given value. If the value is a string, this routine will assume it holds a hex color specification in the form #RRGGBBAA.

    Declaration

    Swift

    public func setTextColor(_ value: Any)

    Parameters

    value

    The value to set the text color from.

  • Sets any control specific bound states (such as colors) with the values from the given ADRecord.

    Declaration

    Swift

    public func setControlSpecificStates(against data: ADRecord)

    Parameters

    data

    The raw data to bind the additional states to.

  • Returns the value of the text view.

    Declaration

    Swift

    public func getValue() -> Any

    Return Value

    The value of the text view as a String.