         // Set the attributed string
         self.setAttributedTitle(title == nil ? nil : style.attributedString(with: title!), for: state)
         
+        // Set text for non-normal states that have no text
         if state == .normal{
             for (otherState, styleDelegate) in self.styleDelegates{
                 if(otherState != state){

        return self.style(for: state).shadow?.shadowColor as? UIColor
    }
    
    public convenience init() {
        self.init(style: TextStyle())
    }
    
    public required init(style: TextStyle, frame: CGRect = .zero) {
        super.init(frame: frame)
        self.setStyle(style, for: .normal)

    // Delegates for the different control states
    fileprivate var styleDelegates = [UIControlState: TextButtonTextStyleDelegate]()
    
    // Set a style for a state. This copies the TextStyle.
    open func setStyle(_ style: TextStyle, for state: UIControlState) {
        
        // Copy any incoming style. This will make it so changes aren't made outside of here
        let style = TextStyle(with: style)
        
        // See if there's existing text for this state. It's stored in the style delegate.
