I have a UITextField (that represents a tip value) in my Storyboard that starts out as $0.00.  If the user types an 8, I want the textField to read $0.08.  If the user then types a 3, I want the textField to read $0.83.  If the user then types 5, I want the textField to read $8.35.  How would I go about changing the input to a UITextField in this manner?
            Asked
            
        
        
            Active
            
        
            Viewed 295 times
        
    2
            
            
        
        vacawama
        
- 150,663
 - 30
 - 266
 - 294
 
- 
                    Why does the question look like the same [question](http://stackoverflow.com/q/28121463/451475) asked just an hour ago? – zaph Jan 24 '15 at 02:54
 - 
                    Because I was answering that user's question and was about to post it when they were intimidated and deleted their question. – vacawama Jan 24 '15 at 02:55
 - 
                    In my opinion, their question was very clear. I'm sorry if you didn't think so, but I hate to see new users intimidated instead of gently guided. – vacawama Jan 24 '15 at 02:58
 - 
                    SO is about helping with code, an attempt should be made, that is how one learns. – zaph Jan 24 '15 at 03:01
 
1 Answers
3
            You can do this with the following four steps:
- Make your viewController a 
UITextFieldDelegateby adding that to theclassdefinition. - Add an 
IBOutletto your textField by Control-dragging from theUITextFieldin your Storyboard to your code. Call itmyTextField. - In 
viewDidLoad(), set your viewController as the textField’sdelegate. Implement
textField:shouldChangeCharactersInRange:replacementString:. Take the incoming character and add it to the tip, and then use theString(format:)constructor to format your string.import UIKit class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var myTextField: UITextField! // Tip value in cents var tip: Int = 0 override func viewDidLoad() { super.viewDidLoad() myTextField.delegate = self myTextField.text = "$0.00" } func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if let digit = Int(string) { tip = tip * 10 + digit textField.text = String(format:"$%d.%02d", tip/100, tip%100) } return false } }
        vacawama
        
- 150,663
 - 30
 - 266
 - 294
 
- 
                    When I press backspace or delete then it doesn't work. Also if I clear textfield then it still keeps going from last point unless I reset tip to zero. – Apoorv Mote Jan 10 '16 at 19:00