     
     public override func becomeFirstResponder() -> Bool {
         
-        self.didTapOnView(self)
+        self.selectLastPossible()
         
         return true
     }

        }
    }
    
    public func replaceLastInvalidOrInsertItemText(text: String, completion: (() -> ())? = nil) {
        
        if let validator = TFBubbleItUpViewConfiguration.itemValidation, let item = self.items.last where !validator(item.text) {
            
            let position = self.items.indexOf({ (i) -> Bool in i.text == item.text })
            
            // Force try because we know that this position exists
            try! self.replaceItemsTextAtPosition(position!, withText: text, completion: completion)
            
            
        } else {
            addStringItem(text, completion: completion)
        }
    }
    

    }

    internal func needUpdateLayout(cell: TFBubbleItUpViewCell) {
        self.needUpdateLayout(cell, completion:nil)
    }
    
    func needUpdateLayout(cell: TFBubbleItUpViewCell, completion: (() -> ())?) {
        self.collectionViewLayout.invalidateLayout()
        
        // Update cell frame by its intrinsic size
        var frame = cell.frame
        frame.size.width = cell.intrinsicContentSize().width
        cell.frame = frame
        
        self.invalidateIntrinsicContentSize(completion)
    }
    
    internal func createAndSwitchToNewCell(cell: TFBubbleItUpViewCell) {
