有時候使用輸入時, 想要限制輸入框只能輸入數字, 該如何實作呢?
我們可使用 NSCharacterSet 來達成此功能。
Step 1: 委託 UITextFieldDelegate
Step 2: 監聽輸入變化 shouldChangeCharactersInRange
Step 3: 設定限制字元
Source Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import UIKit
class ViewController: UIViewController { @IBOutlet weak var numTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() numTextField.delegate = self; } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
extension ViewController : UITextFieldDelegate { func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { let inverseSet = NSCharacterSet(charactersInString:"0123456789.").invertedSet let components = string.componentsSeparatedByCharactersInSet(inverseSet) let filtered = components.joinWithSeparator("") return string == filtered } }
|