     maskDelegate?.maskFieldDidBeginEditing(self)
   }
   
-  func textFieldDidEndEditing(textField: UITextField) {
+  public func textFieldDidEndEditing(textField: UITextField) {
     isBecomeFirstResponder = false
     updateMaskTexWithString(maskText)
     
     maskDelegate?.maskFieldDidEndEditing(self)
   }
 
-  func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
+  public func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
     guard let maskObject = maskObject where !maskObject.isEmpty else { return true }
     
     let rangeInt = range.toRange()!


extension AKMaskField: UITextFieldDelegate {
  
  func textFieldDidBeginEditing(textField: UITextField) {
    guard let maskObject = maskObject where !maskObject.isEmpty else { return }
    
    // Initial carret position

  
  //  MARK: - Obsever
  
  override public func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    guard !blockobserver else { return }
    
    switch keyPath! {
